JAVA
아이템24. 멤버클래스는 되도록 static으로 만들라.
gracelove91
2019. 12. 17. 22:46
반응형
아이템24. 멤버클래스는 되도록 static으로 만들라.
중첩클래스
- 다른 클래스 안에서 정의된 클래스.
- 자신을 감싼 바깥 클래스에서만 쓰여야한다. 그 외 쓰임새가 있다면 톱레벨 클래스로 선언할 것.
- 정적 멤버 클래스, (비정적)멤버클래스, 익명 클래스, 지역 클래스 등이 있다.
정적 멤버 클래스
- 다른 클래스 안에 선언되고, 바깥 클래스의 private 멤버에도 접근 가능을 제외하면 일반 클래스와 똑같음.
- 개념상 중첩 클래스의 인스턴스가 바깥 인스턴스와 독립적으로 존재할 수 있다면 정적멤버클래스로 만들 것. (비정적 멤버 클래스는 바깥 인스턴스 없이는 생성할 수 없다)
결론.
- 메서드 밖에서도 사용해야 하거나 메서드 안에 정의하기엔 너무 길다면 멤버클래스로 만들 것.
- 멤버클래스의 인스턴스 각각이 바깥 인스턴스를 참조한다면 비정적으로 만들 것.
- 그렇지 않으면 정적으로 만들 것.
- 중첩클래스가 한 메서드 안에서만 쓰이면서, 그 인스턴스를 생성하는 지점이 단 한곳이고 해당 타입으로 쓰기에 적합한 클래스나 인터페이스가 이미있다면 익명 클래스로 만들것.
- 그렇지 않으면 지역클래스로 만들 것.
반응형