Skip to content

Latest commit

 

History

History
 
 

item24

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

맴버 클래스(중첩클래스)는 되도록 static으로 만들라


요약

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


비정적 맴버 클래스

  • 숨은 외부(바깥 클래스의 인스턴스) 참조를 갖게 되고, 이는 더 많은 시간과 공간(메모리)을 차지하게 된다.
  • 가비지 컬렉션이 바깥 클래스의 인스턴스를 수거하지 못하게 되면 메모리 누수 가 발생 할 수 있다. 이렇게 되면 문제의 원인을 파악하기 어려워 심각한 상황을 초래 할 수 있다.
  • 맴버 클래스에서 바깥 인스턴스에 접근할 일이 없다면 무조건 static을 붙여서 정적 맴버 클래스로 만들자.