메타정보 : 패키지정보, 타입정보, 멤버(생성자, 필드, 메소드) 정보 등을 말한다
자바는 클래스와 인터페이스의 메타정보를 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 |