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