Closed cheewr85 closed 2 years ago
리플렉션 API는 구체적인 클래스 타입을 알지 못해도 그 클래스의 정보(메서드, 타입, 변수 등등)에 접근할 수 있게 해주는 자바 API임
예시로 아래와 같은 Car 클래스가 존재
public class Car {
private final String name;
private int position;
public Car(String name, int position) {
this.name = name;
this.position = position;
}
public void move() {
this.position++;
}
public int getPosition() {
return position;
}
}
여기서 리플렉션 API가 아니라면 저 Car 타입을 설정하지 않고 Car에 있는 메서드를 사용할 경우 에러가 남, 왜냐하면 타입만 알 뿐 Car 클래스라는 구체적인 타입을 모르기 때문에
Object obj = new Car("foo", 0);
여기서 리플렉션 API를 활용하여 Car 클래스의 move 메서드를 호출할 수 있음
public static void main(String[] args) throws Exception {
Object obj = new Car("foo", 0);
Class carClass = Car.class;
Method move = carClass.getMethod("move");
// move 메서드 실행, invoke(메서드를 실행시킬 객체, 해당 메서드에 넘길 인자)
move.invoke(obj, null);
Method getPosition = carClass.getMethod("getPosition");
int position = (int)getPosition.invoke(obj, null);
System.out.println(position);
// 출력 결과: 1
}
리플렉션 API로 구체적인 클래스 Car 타입을 알지 못해도 위처럼 move 메서드에 접근을 하고 처리할 수 있음, 이렇게 리플렉션 API로 쓸 수 있음
https://tecoble.techcourse.co.kr/post/2020-07-16-reflection-api/
[질문] 23pg
리플렉션 API(아이템 65)에 대해서 추후 학습할 내용이지만 이해를 위해서 간단하게 개념과 내용에 대해서 질문