티스토리 뷰

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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함