티스토리 뷰

Java

Java - Reflection

사용자 엔꾸꾸 2019. 10. 21. 23:26

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() 메소드로 인터페이스에 접근이 가능하다.

정리

'Java' 카테고리의 다른 글

Java - Reflection 클래스 정보 수정 또는 실행하기  (0) 2019.11.04
Java - Annotation Reflection  (0) 2019.10.24
Java - Reflection  (0) 2019.10.21
Java - Javaagent  (0) 2019.10.17
Java - 모자에서 토끼를 꺼내는 마술  (0) 2019.10.16
Java - 코드 커버리지  (0) 2019.10.16
댓글
댓글쓰기 폼
공지사항
Total
75,663
Today
179
Yesterday
201
링크
TAG
more
«   2021/12   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
글 보관함