내부 클래스를 작성할 때 static을 쓰는 이유

jaycee·2023년 2월 14일
0

내부 클래스를 작성할 때 static으로 선언하지 않으면 IDE에서는 경고를 띄운다. 그렇다고해서 컴파일 시 에러는 나지 않는다. 런타임에서도 딱히 에러도 발생하진 않지만 왜 static을 쓰라고 권장할까.

  1. static으로 선언된 내부 클래스는 외부 참조를 할 수 없다.
    static 선언되지 않은 내부 클래스는 바깥 클래스를 외부 참조 한다. 참조된 외부 클래스가 GC 대상이되면 메모리에서 제거해야 되지만 외부 참조로 내부 클래스와 연결되어 있기 때문에 메모리에서 제거가 안되어 잔존하게 되고 이는 곧 메모리 누수로 프로그램이 터지게 된다. 이러한 방법으로 시스템을 운영하면 당장 문제는 없어보이지만 계속해서 메모리 누수가 정체된다. 특히 메모리를 많이 사용하거나 사용자가 많은 프로그램이라면 메모리 누수로 인한 큰 문제가 발생할 수 있다.

  2. 외부 클래스의 인스턴스 생성없이 내부 클래스를 접근하기 위한 용도이다.
    로직에 귀속된 클래스를 별도로 생성하지 않고 한 소스 내부에서 처리할 수 있다. 이는 캡슐화에도 좋고 복잡성도 줄일 수 있다. 특히 의존성 주입이 필요한 테스트 코드를 작성할 때 매우 유용하다. 테스트 코드 내에 내부 클래스로 사용할 구현체 bean을 대충 만들어 의존성 주입을 시킬 수 있다. 외부에서 별도의 테스트용 bean을 생성하고 테스트 코드를 실행하는 것보다 훨씬 편하다.

그러므로 내부 클래스를 선언할 때는 static을 붙이자.

출처

profile
오늘도 하나 배웠다.

0개의 댓글