TIL-20220720

만년 쭈글이 개발자·2022년 7월 20일
0

TIL

목록 보기
3/13

Inner class vs static Inner class

차이점

  • static inner class 는 외부 인스턴스 없이도 만들어질 수 있음 (외부 참조 없음)

  • static inner class 사용예

    public Class Aaaa {
    	 static Class Bbbb{
      }
    }
    
    // 호출 시
    Aaaa.Bbbb bbbb = new Aaaa.Bbbb(); 
    <- Aaaa 인스턴스 생성 없이 바로 Bbbb 생성 가능
  • static이 아닌 class 선언 시 사용예

      public Class Aaaa {
    		 Class Bbbb{
      }
    }
    
    //호출 시 
    Aaaa.Bbbb bbbb = new Aaaa().new Bbbb();
    <- 이너클레스가 외부클래스를 참조하고 있어 반드시 외부클래스를 생성해야 내부클레스를 생성할 수 있음 

외부참조의 단점

  • 인스턴스 생성 시 성능이 낮아짐
  • 외부 인스턴스에 대한 참조가 남아있기 때문에 GC의 대상이 되지 않음 (메모리 효율 저하)

외부참조의 장점(?)

  • 내부 클래스가 외부 클래스의 필드값들 사용이 자유로움(참조중이니까)

결론

내부 클래스는 대부분의 케이스가 static을 붙여서 만들어서 사용하는 것이 좋음!
내부 클래스로 사용하고 싶지 않은 경우, 별개의 클래스로 떼서 사용하는 것이 나음

profile
오늘의 나는 내일의 나보다 젊지

0개의 댓글