less than 1 minute read

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 명령으로 컴파일한다면, 컴파일 오류가 나고 UtensilDessert 클래스를 중복 정의했다고 알려줄 것이다.
  • javac Main.javajavac Main.java Utensil.java 명령으로 컴파일하면, Dessert.java 파일을 작성하기 전처럼 pancake를 출력한다.
  • javac Dessert.java Main.java 명령으로 컴파일하면 potpie를 출력한다.

Leave a comment