공부기록

아이템24. 멤버클래스는 되도록 static으로 만들라. 본문

JAVA

아이템24. 멤버클래스는 되도록 static으로 만들라.

gracelove91 2019. 12. 17. 22:46
반응형

아이템24. 멤버클래스는 되도록 static으로 만들라.

중첩클래스

  • 다른 클래스 안에서 정의된 클래스.
  • 자신을 감싼 바깥 클래스에서만 쓰여야한다. 그 외 쓰임새가 있다면 톱레벨 클래스로 선언할 것.
  • 정적 멤버 클래스, (비정적)멤버클래스, 익명 클래스, 지역 클래스 등이 있다.

정적 멤버 클래스

  • 다른 클래스 안에 선언되고, 바깥 클래스의 private 멤버에도 접근 가능을 제외하면 일반 클래스와 똑같음.
  • 개념상 중첩 클래스의 인스턴스가 바깥 인스턴스와 독립적으로 존재할 수 있다면 정적멤버클래스로 만들 것. (비정적 멤버 클래스는 바깥 인스턴스 없이는 생성할 수 없다)

결론.

  1. 메서드 밖에서도 사용해야 하거나 메서드 안에 정의하기엔 너무 길다면 멤버클래스로 만들 것.
    1. 멤버클래스의 인스턴스 각각이 바깥 인스턴스를 참조한다면 비정적으로 만들 것.
    2. 그렇지 않으면 정적으로 만들 것.
    3. 중첩클래스가 한 메서드 안에서만 쓰이면서, 그 인스턴스를 생성하는 지점이 단 한곳이고 해당 타입으로 쓰기에 적합한 클래스나 인터페이스가 이미있다면 익명 클래스로 만들것.
    4. 그렇지 않으면 지역클래스로 만들 것.
반응형