티스토리 뷰
Reflection API 클래스 정보 수정 또는 실행
Reflection API 를 활용해 인스턴스 생성하기
기본생성자를 가져와 인스턴스 생성
- 기본생성자로 인스턴스를 생성하는 방법은 getConstructor 메소드에서 인자를 null로 지정해주어 생성자를 가져온다.
- 가져온 생성자의 newInstance 메소드를 통해 인스턴스를 생성해준다.
파라메터가 존재하는 생성자를 가져와 인스턴스 생성
- 파라메터가 존재하는 생성자로 인스턴스를 생성하는 방법은 getConstructor 메소드에서 인자를 Class type 인스턴스를 지정해주어 생성자를 가져온다.
- 기본 생성자와 마찬가지로 newInstance 메소드를 통해 인스턴스르 생성해준다.
Reflection API 를 활용해 필드 정보 참조하기
static 필드 정보 참조하기
- getDeclaredField메소드를 사용해 필드 메타정보를 가져온다.
- 가져온 field의 get, set 메소드를 활용해 필드의 값을 가져오거나, 수정할 수 있다.
- 이때 해당 필드가 static 필드가 아니라면, 첫번째 인자로 특정 인스턴스를 넘겨주어야한다.
instance 필드 정보 참조하기
- static 필드와 마찬가지로 getDeclaredField메소드를 사용해 필드 메타정보를 가져온다.
- 가져온 field의 get, set 메소드를 활용해 필드의 값을 가져오거나, 수정할수 있으며 첫번째 인자로 인스턴스를 넘겨주어야 한다.
Reflection API 를 활용해 메소드 정보 참조하기
매개변수가 없는 메소드 정보 참조하기
- getDeclaredMethod 메소드를 활용해 메소드 정보를 참조할 수 있다.
- invoke 메소드를 사용해여 메소드를 실행할 수 있다.
- 특정 인스턴스에 해당하는 메소드라면 해당 인스턴스를 넘겨 주어야 한다.
매개변수가 있는 메소드 정보 참조하기
- 이전과 마찬가지로 getDeclaredMethod 메소드를 활용해 메소드 정보를 참조할 수 있다.
- 메소드 정보를 참조할때 해당 메소드의 파라미터의 type은 기본형 타입과 Wrapper 타입을 구분하기 떄문에 주의해야한다.
- invoke 메소드를 사용하여 메소드를 실행할 수 있다
'Java' 카테고리의 다른 글
Java - Reflection 정리 (0) | 2019.11.06 |
---|---|
Java - DI Container 만들어보기 (0) | 2019.11.06 |
Java - Annotation Reflection (0) | 2019.10.24 |
Java - Reflection (0) | 2019.10.21 |
Java - Javaagent (0) | 2019.10.17 |
댓글