Java/Java Concept

[Java] inner class를 static으로 선언해야 하는 이유

SeungbeomKim 2024. 5. 16. 23:54

 

inner class를 static으로 "반드시" 선언해야 하는 이유가 2가지가 있습니다. 

 

첫째, 위 코드를 기반으로 봤을 때, inner class 바깥 클래스의 인스턴스와 암묵적으로 연결되어 GC의 메모리 수거가 잘 수행되지 않을 수 있습니다. 그래서 Intellij에서 inner class를 non-static으로 선언할 경우, static으로 바꾸라는 경고표시가 생깁니다. 

 

사진과 같이, static으로 선언한 경우 외부 참조를 하지 않는 것을 육안으로 확인할 수 있습니다.

 

둘째, 이러한 외부 참조를 저장하려면 시간과 공간이 많이 소비됩니다. 그래서 외부 참조를 막을 수 있도록 static 키워드를 붙여주는 것이 합리적입니다. 

 

결론

  • 멤버 클래스의 인스턴스 각각이 바깥 인스턴스를 참조해야 하는 상황이 아니면 정적(static)으로 inner class를 만들어주자.