티스토리 뷰
Reflection
- Class API를 사용하여 리플렉션을 사용할 수 있음
Reflection을 사용하여 참조할 수 있는 정보
- 클래스의 필드
- 상위클래스
- 인터페이스
- 메소드 목록 등 ..
Reflection 사용해보기
- Reflection 을 사용하기 이전 참조할 클래스를 생성해보자
Book, MyBook, MyInterface
Reflection 사용하기
Class 인스턴스를 참조하는 방법
- class 인스턴스를 참조하는 방법은 3가지이다.
- 1.Book.class 와 같이 클래스 로드시 힙에 저장되는 class 인스턴스를 참조하는 방법
- 2.특정인스턴스의 getClass() 메소드로 참조하는 방법
- 3.FQCN을 이용해 Class.forName() 메소드로 참조하는 방법
특정 클래스의 필드 참조하기
- getFields() 메소드와 getDeclaredFields() 메소드를 통해 클래스의 필드에 접근이 가능하다.
- 이때 getFields() 메소드는 public 한 필드에만 접근이 가능하다.
특정 클래스의 필드값 가져오기
- 이전과 같은 방법으로 필드의 값을 가져올수 있는데 이때 해당 필드의 접근제어자가 private 이라면 예외가 발생한다.
- private한 필드에도 접근이 가능하도록 setAccessible(true); 로 설정을 해주어야 한다.
특정 클래스의 생성자에 접근하는 방법
- getDeclaredConstructors() 메소드로 생성자에 접근이 가능하다.
특정 클래스의 부모클래스에 접근하는 방법
- getSuperclass() 메소드로 부모 클래스에 접근이 가능하다.
- 이때 부모클래스는 하나만 존재하기 때문에 Class 타입으로 하나의 인스턴스만 가져올 수 있다.
특정 클래스의 인터페이스에 접근하는 방법
- getInterfaces() 메소드로 인터페이스에 접근이 가능하다.
정리
- 앞에서 살펴본것 외에도 다양한 클래스 정보가 참조 가능하다.
- https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html
'Java' 카테고리의 다른 글
Java - Reflection 클래스 정보 수정 또는 실행하기 (0) | 2019.11.04 |
---|---|
Java - Annotation Reflection (0) | 2019.10.24 |
Java - Javaagent (0) | 2019.10.17 |
Java - 모자에서 토끼를 꺼내는 마술 (0) | 2019.10.16 |
Java - 코드 커버리지 (0) | 2019.10.16 |
댓글