자바 리플렉션(Reflection)

dy7888·2023년 8월 26일
0

리플렉션(Reflection)이란?

구체적인 클래스 타입을 알지 못하더라도, 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API.

컴파일 시간이 아닌 실행 시간에 동적으로 특정 클래스의 정보를 추출할 수 있는 프로그래밍 기법.

리플렉션은 언제 사용할까?

  • 동적으로 클래스를 사용해야할 때
  • 프레임워크나 IDE에서 이런 동적 바인딩을 이용한 기능 제공
  • 리플렉션 사용 예시: IntelliJ 자동완성 기능, 스프링 어노테이션

    리플렉션으로 우리가 스프링에서 @Component, @Bean같은 어노테이션을 사용할 수 있다.

리플렉션을 사용하여 가져올 수 있는 정보

  • 클래스
  • 생성자
  • 메소드
  • 필드

리플렉션 장점

런타임 시에 클래스 정보를 동적으로 검사/조작할 수 있어 유연한 프로그래밍 가능

리플렉션 단점

일반적으로 메소드를 호출할 때 컴파일 시점에서 분석된 클래스를 사용하지만, 리플렉션은 런타임에 클래스를 분석하므로 속도가 느리다. 이러한 특징으로 타입 체크가 컴파일 타임에 불가능하고, 단순히 필드 및 메소드를 접근할 때보다 리플렉션을 사용하여 접근할 때 성능이 느리다.

일반적인 웹 애플리케이션 개발자는 사실 리플렉션을 사용할 일이 거의 없어, 정말 필요한 곳에만 리플렉션을 한정적으로 사용해야한다.

profile
나의 기록하는 개발 일지

0개의 댓글