Skip to content

Latest commit

 

History

History
75 lines (52 loc) · 1.64 KB

25_톱레벨_클래스는_한_파일에_하나만_담으라_최락준.md

File metadata and controls

75 lines (52 loc) · 1.64 KB

아이템 25. 톱레벨 클래스는 한 파일에 하나만 담으라.

톱레벨 클래스란?


먼저 톱레벨 클래스가 무엇인지 알아보자.
다음은 oracle 공식 페이지에 나온 톱레벨 클래스에 대한 설명이다.

A top level class is a class that is not a nested class.

톱 레벨 클래스는 중첩 클래스가 아닌 클래스이다.
즉 우리가 일반적으로 사용하는 단일 형태의 클래스를 말한다.

그렇다면 중첩 클래스는 무엇일까?

A nested class is any class whose declaration occurs within the body of another class or interface.

중첩 클래스란 다른 클래스/인터페이스 내부에 선언된 클래스를 뜻한다.


무엇이 문제일까?

그렇다면 한 파일에 여러개의 톱레벨 클래스가 담긴 것은 무엇을 뜻할까?

바로 중첩되지 않은 클래스가 하나의 java 파일에 여러개 담긴 것을 뜻한다.

class A {
    String NAME = "a";
}

class B{
    String NAME = "b";
}

A.java

class B {
    String NAME = "aa";
}

class A{
    String NAME = "bb";
}

B.java

이 처럼 A와 B파일에 같은 클래스를 순서만 바꿔서 선언한 경우,

javac 명령을 통해 컴파일할 때 컴파일 순서에 따라 동작이 달라질 수 있다고 한다.

(하지만 우리의 똑똑한 IDE는 이를 미리 잡아준다.)


해법은 ?


  1. 한 개의 파일에 한 개의 톱레벨 클래스만 둔다.

  2. 정적 멤버 클래스 방식을 사용한다.

public class AB {
    private static class A {

    }

    private static class B {

    }
}