자바 리플렉션(Reflection)의 장단점

주야·2024년 4월 16일

1. 리플렉션(reflection)란?

프로그램의 런타임(runtime) 중에 클래스의 정보를 검사하고, 객체를 생성하거나 메서드를 호출하며, 필드에 접근하는 등의 작업을 수행하는 기술입니다.

리플렉션: "반사"라는 단어 뜻으로 유추 할 수 있듯,
런타임 시 클래스를 비추어(리플렉션) 반사된 클래스로 클래스 정보(매서드, 타입, 변수 등)에 접근 할수 있도록 하는 자바 API라고 한다.

2. 리플렉션 장점

  • 동적으로 클래스의 정보를 가져와서 분석하고 조작할 수 있어서, 유연하고 다양한 상황에서 활용할 수 있습니다.
  • 프레임워크나 라이브러리에서 사용되는 라이브러리 코드의 구조를 파악하거나, 메타데이터를 처리할 때 유용합니다.
  • 특정 클래스나 메서드가 존재하는지 확인하고, 필드나 메서드를 조작하여 기능을 확장하거나 동적으로 호출할 수 있습니다.

3. 리플렉션 단점

  • 성능에 부정적인 영향을 미칩니다. 리플렉션을 사용하면 컴파일러의 최적화를 우회하고, 직접 코드를 조작하므로 일반적인 메서드 호출보다 느립니다.
  • 컴파일 시점에 발생하는 타입 체크를 실행 시점으로 미루게 되어, 프로그램이 더 많은 오류를 실행 중에 발견하게 됩니다.
  • 보안 문제를 유발할 수 있습니다. 리플렉션을 사용하면 보안 제한자(field private에 직접 접근)를 우회하여 접근할 수 있으며, 잘못된 사용으로 시스템의 무결성을 해치는 보안 취약점을 만들 수 있습니다.


이것 저것 분석해보니, 꼭 필요한 경우가 아니라면 자바 리플렉션 사용 지양이 맞는 듯하다.

profile
개발자

0개의 댓글