[Java] Java의 내부 클래스는 static으로 선언하자
Programming/JAVA
2022. 9. 11. 19:53
내부 클래스(Nested Class)는 다음과 같이 다른 클래스 안에 정의된 클래스를 의미한다. public class Outer{ // 인스턴스 클래스 public class Inner{ } // 스테틱 클래스 static public class sInner{ } } 인스턴스 내부 클래스는 외부 클래스를 참조하는 변수를 선언하지 않아도 바이트 코드 변환시 자동으로 외부를 참조하는 변수를 만든다. 왜냐하면 static이 아닌 내부 클래스는 바깥 인스턴스 없이는 생성할 수 없기 때문이다. 두 클래스의 관계는 내부 클래스의 인스턴스 안에 만들어지며, 메모리를 차지한다. 외부 인스턴스에 대한 참조가 존재하기 때문에, 가비지 컬렉션이 인스턴스 수거를 하지 못하여 메모리 누수가 생길 수 있다. static 내부 ..