Java

Java_리플렉션

ssmm95 2024. 10. 16. 11:47

메타정보 : 패키지정보, 타입정보, 멤버(생성자, 필드, 메소드) 정보 등을 말한다 

 

자바는 클래스와 인터페이스의 메타정보를 Class 객체로 관리한다

메타 정보를 프로그램에서 읽고 수정하는 행위를 리플렉션(reflection) 이라고 한다

 

-리플렉션의 주요 클래스 및 인터페이스

Class: 클래스의 메타데이터를 얻기 위한 기본 클래스

Method : 클래스의 메서드 정보를나타내는 클래스

Filed : 클래스의 필드 정보를 나타내는 클래스

Constructor : 클래스의 생성자 정보를 나타내는 클래스

 

프로그램에서 Class 객체를 얻으려면 다음 3가지 방법중 하나를 이용해보자

1. Class clazz = 클래스이름.class;
예) Class clazz = String.class;
2. Class clazz = Class.forName("패키지...클래스이름");
예) Class clazz = Class.forName("java.lang.String");
// 1,2번 방법은 클래스로부터 얻는 방법
3. Class clazz = 객체참조변수.getClass(); 
예) String str = "감자바";
	Class clazz = str.getClass();
// 3번은 객체로부터얻는 방법

 

- 패키지와 타입 정보 얻기 

패키지와 타입(클래스, 인터페이스) 이름 정보는 다음 메소드를 통해 얻을 수 있다 

메소드 용도
Package getPackage() 패키지정보읽기
String getSimpleName() 패키지를 제외한 타입 이름
String getName() 패키지를 포함한 전체 타입 이름

 

- 멤버 정보 얻기 

타입(클래스, 인터페이스) 가 가지고 있는 멤버 정보는 다음 메소드를 통해 얻을 수 있다

메소드 용도
Constructor[] getDeclaredConstructors() 생성자 정보 읽기
Field[] getDeclaredFields() 필드 정보 읽기
Method[] getDeclaredMethods() 메소드 정보 읽기

 

- 리소스 경로 얻기

메소드 용도
URL getResource(String name) 리소스 파일의 URL 리턴
InputStream getResourceAsStram(String name) 리소스 파일의 InputStream 리턴

'Java' 카테고리의 다른 글

Java_제네릭(Generics)  (0) 2024.10.16
Java_어노테이션(Annotation)  (0) 2024.10.16
Java_날짜와 시간 클래스  (0) 2024.10.16
Java_java.base 모듈  (1) 2024.10.15
소스 작성 부터 실행까지  (2) 2024.09.04