inner class를 static으로 "반드시" 선언해야 하는 이유가 2가지가 있습니다.
첫째, 위 코드를 기반으로 봤을 때, inner class 바깥 클래스의 인스턴스와 암묵적으로 연결되어 GC의 메모리 수거가 잘 수행되지 않을 수 있습니다. 그래서 Intellij에서 inner class를 non-static으로 선언할 경우, static으로 바꾸라는 경고표시가 생깁니다.
사진과 같이, static으로 선언한 경우 외부 참조를 하지 않는 것을 육안으로 확인할 수 있습니다.
둘째, 이러한 외부 참조를 저장하려면 시간과 공간이 많이 소비됩니다. 그래서 외부 참조를 막을 수 있도록 static 키워드를 붙여주는 것이 합리적입니다.
결론
- 멤버 클래스의 인스턴스 각각이 바깥 인스턴스를 참조해야 하는 상황이 아니면 정적(static)으로 inner class를 만들어주자.
'Java > Java Concept' 카테고리의 다른 글
[Java] Clean Code가 무엇이고 왜 사용해야 하는가 (2) | 2024.07.24 |
---|---|
[Java] enum 비교에서는 equals(), == 둘 중 어떤 것이 적합한가? (0) | 2024.05.16 |
[Java] HashMap, HashTable, ConcurrentHashMap 자료구조에 대해서 알아보자 (2) | 2024.01.22 |
[Java] EnumSet에 대해서 (1) | 2023.11.13 |
[Java] 객체지향 사실과 오해 1- 협력하는 객체들의 공동체 (0) | 2023.03.10 |