🙋 Reflection API란?
구체적인 클래스 타입을 알지 못해도 메서드, 타입, 변수 등 해당 클래스의 정보에 접근할 수 있게 해주는 Java API이다.
public class Member {
private String name;
private int age;
public Member(String name, int age) {
this.name = name;
this.age = age;
}
public void memberTest() {
System.out.println("test입니다.");
}
}
public static void main(String[] args) {
Object obj = new Member("kim", 10);
obj.memberTest(); // 에러 발생
}
obj는 Object로 타입이 결정(java는 컴파일 시점에 타입이 결정되므로 여기서 obj는 Object로 타입이 결정된다.)됐으므로
Object 클래스 메서드, 변수들만 사용이 가능해서 Member클래스의 memberTest 사용 시 에러가 발생한다.
(Member 클래스의 구체적 타입을 모르기 때문이다.)
이때 Member클래스의 정보에 접근 가능하게 해주는 것이 Reflection API이다.
(* 사용법 참고 https://www.baeldung.com/java-reflection)
이런 동작이 가능한 이유는 JVM가 실행되면서 코드가 컴파일러에 의해 바이트 코드로 변환되고, static영역에 저장된다.
Reflection API는 이 static 영역에 저장된 정보를 활용하는 것이다.
그러나, 우리가 실제로 코드를 작성할 때는 구체적인 클래스를 모르는 일은 거의 없다.
따라서 애플리케이션 개발보다 프레임워크나 라이브러리에서 많이 사용된다.
'Java' 카테고리의 다른 글
[Java] Iterator, Enumeration (0) | 2023.10.17 |
---|---|
[Java] Optional이란? Optional 개념 및 사용 (0) | 2023.10.05 |
[Java] import static 사용하는 이유 (0) | 2023.08.09 |
[Java] Static - 정적 변수와 메서드 (0) | 2023.06.13 |
Intellij tomcat 연동 및 설정 (gradle) (0) | 2023.05.19 |