티스토리 뷰

반응형

톱레벨 클래스가 소스 파일 하나에 들어있으면 심각한 위험을 감수해야한다.

//A.java 파일

class A {
    static final String NAME = "ab";
}

class B{
    static final String NAME = "cd";
}
//B.java 파일

class A {
    static final String NAME = "ef";
}

class B{
    static final String NAME = "gh";
}

만약 다른곳에서 A 클래스와 B 클래스를 참조할때 중복 정의이기 때문에 이와 같이 작성하면 안된다.

컴파일러에 어느 소스 파일을 먼저 건네느냐에 따라 동작이 달라지므로 이렇게 사용하면 안된다.

 

 

해결방안은 단순히 톱레벨 클래스들을 서로 다른 소스파일로 분리하는 것이다.

굳이 한 파일에 담고 싶다면 정적 멤버 클래스를 사용해라.

public class Main {
    private static class A {

    }

    private static class B {

    }
}

 

결론

소스 파일 하나에는 반드시 하나의 톱레벨 클래스/인터페이스 를 담자.

이렇게 해야 소스파일을 어떤 순서로 컴파일하든간에 동작이 달라지는 일은 없을 것이다.

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday