[Java] inner class 잘 사용하기

bagt13·2022년 11월 17일
0

JAVA

목록 보기
6/7

📒 Inner Class (내부 클래스)

외부 클래스와 내부 클래스가 관계가 밀접한 경우 사용하며, 특정 클래스에서 제한적으로 생성 및 사용할 수 있도록 할때 용이하다.

관련이 있는 부분들을 묶어 코드 캡슐화를 표현할 수 있으며, 외부에서 접근이 불가능하기 때문에 코드의 복잡성을 줄일 수 있다.



📒 Inner Class의 단점

하지만 내부 클래스는 외부 클래스 인스턴스의 참조값을 가진다는 점에서

  • 인스턴스 생성 시 시간적/공간적 성능이 저하된다
  • 외부 인스턴스에 대한 참조로 인해 GC에 의해 수거되지 못한다는 점에서 메모리 누수가 발생할 수 있다.



📗 static Inner Class

비정적(static이 아닌) 내부 클래스의 경우 외부 인스턴스를 통해 내부 클래스의 인스턴스를 생성해야 하기 때문에 참조가 일어날 수밖에 없다.

하지만 static 내부 클래스는 외부 클래스 인스턴스의 참조를 유지하지 않는다. 따라서 static 내부 클래스로 선언하면 메모리 누수를 예방할 수 있고, 클래스의 각 인스턴스당 더 적은 메모리를 사용하게 된다.


내부 클래스에서 외부 인스턴스에 접근할 일이 없다면 static inner class를 생성하는 것이 좋다.


📗 static inner class 예시

Dto를 관리하는 방법 중 도메인 별로 내부 클래스로써 관리하는 방법이며, 이때 static inner class를 사용했었다. 이 경우 내부 -> 외부로의 접근이 없기 때문에, static으로 사용해 관리하면 효율적이다.

profile
주니어 백엔드 개발자입니다😄

0개의 댓글