-
아이템 25. 톱레벨 클래스는 한 파일에 하나만 담아라TL;DR
자바 컴파일러는 하나의 소스파일에 그러나 가독성 측면도 좋지않을 뿐만아니라, 심각한 위험을 감수해야한다. 하나의 소스파일에 여러 톱레벨 클래스를 선언하게 된다면 그 중 어느 것을 사용할지는 어떤 소스 파일을 먼저 컴파일 하냐에 따라 달라진다. 예제를 통해서 알아보자. 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"; }
class Utensil { static final String NAME = "pot"; } class Dessert { static final String NAME= "pie"; }동시에 컴파일 할 경우두개 같이 동시에 컴파일한다면 따로 컴파일을 할 경우
위 처럼 따로 컴파일 하는데 어느 것이 컴파일러에 먼저 순서가 가느냐에 따라서 동작이 달라진다. 따라서 컴파일 시점에서 문제가 생기기 때문에 조심해야할 문제다. 해결책
public class Test{ public static void main(String[] args){ System.out.println(Utensil.NAME + Dessert.NAME); } private static class Utensil { static final String NAME = "pen"; } private static class Dessert { static final String NAME= "cake"; } }💡결론 : 톱레벨 클래스는 한 파일에 하나만 담으라! |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
| 정리감사합니다. 점점 아이템이 늘어날 수록 이전 아이템고 연관해서 생각해야할 것들이 많아지는 것 같습니다. ㅎㅎ |
Beta Was this translation helpful? Give feedback.
-
| 잘 봤습니다. SonarLint 같은 정적 코드 분석기를 이용하면 해당 아이템 내용을 교정할 수 있도록 가이드해주니 활용하면 좋을 것 같네요~ |
Beta Was this translation helpful? Give feedback.




잘 봤습니다. SonarLint 같은 정적 코드 분석기를 이용하면 해당 아이템 내용을 교정할 수 있도록 가이드해주니 활용하면 좋을 것 같네요~