Develop/Java

[Java] 리플렉션

_hong 2023. 1. 16. 20:03

리플렉션이란?

동적으로 클래스의 정보를 분석하거나, 클래스의 메소드를 호출 할 수 있게해주는 api

 

리플렉션 단점

1.컴파일 최적화를 하지 못한다. 

리플렉션을 실행하는 부분은 미리 실행 내용에 대한 정보를 알지 못하므로  jvm은  컴파일 타임에 최적화 하지 못한다.

JIT Compiler의 Bytecode Caching, Opcode Optimization.. 등

 

초기 호출 이후로는 캐싱을 통해서 Reflection API를 통한 메서드 호출도 최적화된다는 것을 의미한다.

 

2.정적으로 타입 검사를 하지 못한다.

 

정적을 타입 검사를 하지 못하므로 런타임에 타입 오류가 날 수 있다.

 

3.캡슐화 저해

접근 제한자에 상관없이 리플렉션은 접근 할 수 있다.

 

 

그럼에도 불구하고 왜 필요한가?

컴파일 타임에는 알 수 없지만 런타임에 동적으로 클래스의 정보를 확인하고 메소드를 실행 시킬 수 있다. 

 

 

 

 

https://lob-dev.tistory.com/entry/Java-Reflection-API

 

Java의 Reflection API와 성능 이슈?

Reflection이란? Compile Time에 Class나 Method 명을 알지 못하더라도 Runtime에 Type, Classpath를 이용하여 인스턴스화, 객체의 상태, 메서드 정보 등을 가져올 수 있도록 지원하는 API이다. 사용하는 Library, Fram

lob-dev.tistory.com