Effective Java 04 - item 24 -
in Programming Language on Java
멤버 클래스는 되도록 static으로 만들어라
중첩 클래스는 다른 클래스 안에 정의된 클래스를 의미한다.
정적 멤버 클래스와 비정적 멤버 클래스의 구문상 차이는 static 유무이지만 의미상 차이는 꽤 크다.
비정적 멤버 클래스의 인스턴스는 바깥 클래스의 인스턴스와 암묵적으로 연결
된다.
멤버 클래스에서 바깥 인스턴스에 접근할 일이 없다면 무조건 static을 붙여 정적 멤버 클래스로 만들어주자.
중첩 클래스에는 총 네 가지가 존재한다.
메서드 밖에서도 사용해야하고 메서드 안에 정의하기에는 너무 길다면 멤버 클래스
로 만든다.
멤버 클래스의 인스턴스 각각이 바깥 인스턴스를 참조한다면 비정적
을,
참조할 필요가 없다면 정적
으로 만들자.
중첩 클래스가 한 메서드 안에서만 쓰이면서 그 인스턴스를 생성하는 지점이 단 한곳이고 해당 타입으로 쓰기에 적합한 클래스나 인터페이스가 이미 있다면 익명 클래스로 만들고,
그렇지 않으면 지역 클래스로 만들자.
Reference
이펙티브 자바 Effective Java 3/E
조슈아 블로크