언어/Effective Java

이펙티브 자바 Item 25 - 톱레벨 클래스는 한파일에 하나만 담자

now0204 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 오류 발생할 수 있다. 따라서 이런 문제가 발생하지 않게 바로 잡아야한다.

 

 


톱레벨 클래스 중복정의 해결방법

 

단순히 톱레벨 클래스들을 서로 다른 소스 파일로 분리하면 된다.

만약 굳이 서로 다른 여러 톱레벨 클래스를 한 파일에 담고 싶다면 정적 멤버 클래스를 사용하는 방법을 고민해보자.

 


참고자료 

 

https://velog.io/@alkwen0996/%EC%9D%B4%ED%8E%99%ED%8B%B0%EB%B8%8C-%EC%9E%90%EB%B0%94-%EC%95%84%EC%9D%B4%ED%85%9C25-%ED%86%B1%EB%A0%88%EB%B2%A8-%ED%81%B4%EB%9E%98%EC%8A%A4%EB%8A%94-%ED%95%9C-%ED%8C%8C%EC%9D%BC%EC%97%90-%ED%95%98%EB%82%98%EB%A7%8C-%EB%8B%B4%EC%9C%BC%EB%9D%BC

 

[이펙티브 자바] 아이템25 | 톱레벨 클래스는 한 파일에 하나만 담으라

톱레벨 클래스는 한파일에 하나만 담자 톱레벨 클래스를 여러개 선언하면 이득은 없고 심각한 위험만 발생할 수 있다. 한 클래스를 여러개로 정의할 수 있으며, 그 중 어느것을 사용할지는 어느

velog.io