item 25 톱 레벨 클래스는 한 파일에 하나만 담으라
- Java에서는 한 소스파일 내에 톱 레벨 클래스를 여러 개 선언할 수 있으나, 아무 장점이 없고 부작용을 감수해야 하므로 하지 않는 것이 좋다.
- 이렇게 하면 한 클래스를 여러 가지로 정의할 수 있으며, 이 중 어느것을 사용할지는 어느 소스파일을 먼저 컴파일하느냐에 따라 달라질 것이다.
- 톱 레벨 클래스를 서로 다른 소스 파일에 선언하자.
- 다만 꼭 여러 톱 레벨 클래스를 한 파일에 담고 싶다면 정적 멤버 클래스를 활용할 수 있다.
// Utensil.java
class Utensil {
static final String NAME = "pan";
}
class Dessert {
static final String NAME = "cake";
}
// Dessert.java
class Utensil {
static final String NAME = "pot";
}
class Dessert {
static final String NAME = "pie";
}
// Main.java
public class Main {
public static void main(String[] args) {
System.out.println(Utensil.NAME + Dessert.NAME);
}
}
javac Main.java Dessert.java 명령으로 컴파일한다면, 컴파일 오류가 나고 Utensil과 Dessert 클래스를 중복 정의했다고 알려줄 것이다.
javac Main.java나 javac Main.java Utensil.java 명령으로 컴파일하면, Dessert.java 파일을 작성하기 전처럼 pancake를 출력한다.
javac Dessert.java Main.java 명령으로 컴파일하면 potpie를 출력한다.
Leave a comment