-
이펙티브 자바 Item 25 - 톱레벨 클래스는 한파일에 하나만 담자언어/Effective Java 2024. 6. 4. 11:17
톱레벨 클래스는 한 파일에 하나만 담자
톱레벨 클래스를 여러개 선언하면 이득은 없고 심각한 위험만 발생할 수 있다.
한 클래스를 여러개로 정의할 수 있으며, 그 중 어느것을 사용할지는 어느 소스파일을 먼저 컴파일하냐에 따라 달라지기 때문이다.
톱레벨 클래스 중복정의
Utensil과 Dessert참조 하는 Main 클래스
public class Main { public static void main(String[] args) { System.out.println(Utensil.NAME + Dessert.NAME); } }
class Utensil { static final String NAME = "pan"; } class Dessert { static final String NAME = "cake"; }
- Utensil파일에 있는 똑같은 클래스를 중복 정의했을 때 컴파일러의 동작 결과가 달라지므로 문제가 발생한다.
* 컴파일러에 어느 소스파일은 먼저 건네느냐에 따라서 정상 동작 or 오류 발생할 수 있다. 따라서 이런 문제가 발생하지 않게 바로 잡아야한다.
톱레벨 클래스 중복정의 해결방법
단순히 톱레벨 클래스들을 서로 다른 소스 파일로 분리하면 된다.
만약 굳이 서로 다른 여러 톱레벨 클래스를 한 파일에 담고 싶다면 정적 멤버 클래스를 사용하는 방법을 고민해보자.
참고자료
'언어 > Effective Java' 카테고리의 다른 글
이펙티브 자바 Item29 - 이왕이면 제네릭 타입을 사용하라 (0) 2024.06.04 이펙티브 자바 Item 26,27,28 (제네릭 관련) (0) 2024.06.04 이펙티브 자바 Item 24 - 멤버 클래스는 되도록 static으로 만들라 (1) 2024.06.04 이펙티브 자바 - Item 21 - 인터페이스는 구현하는 쪽을 고려해서 설계하라 (0) 2024.06.04 이펙티브 자바 Item 20 - 추상클래스보다는 인터페이스를 우선시하라 (0) 2024.05.31