티스토리 뷰

프로그래밍/JAVA

Reflection API

DEV LION 2022. 12. 7. 00:11

1. Reflection 

- Class 타입의 객체를 통해 특정 클래스의 구조(필드, 메소드, 어노테이션 등)를 런타임에 분석할 수 있는 API

- JVM에서 실행하는 어플리케이션의 런타임 동작을 검사하거나 수정하는 기능이 필요한 프로그램에서 사용

단점)

1. JVM 최적화 수행 불가

2. 보안 제한?

3. 불법적인 작업 (private 필드 및 메서드 액서스) 수행 가능 → 부작용 발생할 수 있다.

https://docs.oracle.com/javase/tutorial/reflect/

 

2. Class 객체를 얻는 방법

// 인스턴스를 얻을 수 없을 때 사용
Class a = HttpGet.class;
System.out.println(a.getName());
		
// 인스턴스를 통한 생성
HttpGet h = new HttpGet();
Class b = h.getClass();

// 이름을 통한 생성. but ClassNotFoundException 처리 필요
Class c = Class.forName("test.HttpGet");

3. 특정 클래스 구조를 분석

public class Home {
	public int a = 2;
	private String b = "Hello Home";
	public int windowCnt() {
		return 2;
	}
}

// Home 클래스의 필드 가져오기
Class home = Home.class;
Arrays.stream(home.getDeclaredFields()).forEach(System.out::println);

결과 :

 

 


 

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