티스토리 뷰
728x90
반응형
Java Reflection
구체적인 클래스 타입을 알지 못해도, 그 클래스의 메소드, 타입, 변수들을 접근할 수 있도록 해주는 Java API
Java Reflection은 Java 프로그램에서 클래스의 메타데이터를 동적으로 검사하고 조작하는 기능을 제공합니다.
Reflection을 사용하면 실행 중에 클래스의 필드, 메서드, 생성자 등을 검사하고 호출할 수 있으며,
새로운 객체 인스턴스를 생성하거나 필드 값을 읽고 쓸 수도 있습니다.
- 클래스 정보 검사: Reflection을 사용하여 클래스의 이름, 패키지, 상위 클래스, 인터페이스, 필드 및 메서드 등의 정보를 검사할 수 있습니다.
- 동적 객체 생성: Reflection을 사용하여 클래스의 생성자를 호출하여 새로운 객체 인스턴스를 생성할 수 있습니다. 이는 런타임에 객체의 타입을 결정해야 하는 경우에 유용합니다.
- 메서드 및 필드 호출: Reflection을 사용하여 메서드를 호출하거나 필드 값을 읽고 쓸 수 있습니다. 이를 통해 런타임에 메서드나 필드의 이름을 알고 있는 경우에 동적으로 해당 메서드나 필드를 호출할 수 있습니다.
- 애노테이션 처리: Reflection을 사용하여 클래스나 메서드 등에 부착된 애노테이션 정보를 읽고 처리할 수 있습니다. 이를 통해 리플렉션을 사용하여 애노테이션 기반의 프레임워크나 라이브러리를 개발할 수 있습니다.
Reflection은 자바의 강력한 기능 중 하나이지만, 사용에 주의해야 합니다.
Reflection은 일반적인 메서드 호출보다 더 많은 오버헤드가 발생하며, 컴파일 타임에 타입 안전성을 보장하지 않습니다.
따라서 Reflection을 사용할 때에는 성능 저하와 타입 안정성에 주의해야 하며,
가능하면 Reflection을 최소화하여 정적인 코드를 선호하는 것이 좋습니다.
728x90
반응형
'Java' 카테고리의 다른 글
에러 vs 예외 (0) | 2020.05.19 |
---|---|
추상클래스 vs 인터페이스 (0) | 2020.04.27 |
Multi Threads Race Condition (0) | 2020.03.19 |
Arrays binarySearch() vs HashMap (0) | 2020.02.14 |
String split() vs StringTokenizer (0) | 2020.02.12 |
반응형
300x250