클래스와 객체에 관한 리플렉트 정보를 취득하는 클래스 및 인터페이스를 제공하는 패키지이다. 리플렉트 패키지는 클래스의 정보를 알고자 할때 사용하는 패키지이다.
java.lang.reflect 패키지 클래스들
Filed 클래스
클래스 또는 인터페이스에 대한 정보, 그것들에의 동적인 액세스, 그 단일 필드를 제공합니다.
Method 클래스
클래스 또는 인터페이스 상의 단일의 메소드에 관한 정보와 그 엑세스를 제공합니다.
Modifier 클래스
클래스나 맴버의 액세수 수식자를 복호화하기 위한 static 메소드나 정수를 제공합니다.
java.lang.reflect 패키지
/*
* 제 목 : reflect 패키지사용 예제
* 작성일 : 2009. 1. 20
* reflect 클래스는 클래스의 정보(슈퍼클래스명, 멤버메소드, 멤버 변수등)를 갖는 클래스
*/
import java.awt.Button;
import java.lang.reflect.*;
import java.lang.*;
class Simulator {
public static void getMemberFeilds(Object o) {
Class c = o.getClass();
Field []f = c.getFields();
System.out.println("맴버변수의 수 : " + f.length);
for(int i = 0; i < f.length ; i++){
String s1 = f[i].getType().toString();
String s2 = f[i].getName();
System.out.println(s1 +" "+ s2);
}
}
/** 멤버 메소드를 얻어 화면에 출력 */
public static void getMemberMethods(Object o) {
Class c = o.getClass();
// Method 클래스의 getMethods() 메소드를 사용하여 메소드정보를 얻어 배열로 저장
Method []m = c.getMethods();
System.out.println("\n맴버변수의 수 : " + m.length);
for(int i = 0 ; i < m.length ; i++){
String s2 = m[i].toString();
System.out.println(s2);
}
}
/** 슈퍼클래스명과 클래스 이름을 출력 */
static void getNameSuperClass(Object o) {
Class c = o.getClass();
String s = c.getName();
String s1 = c.getSuperclass().toString(); // 슈퍼클래스의 이름을 문자열로 저장
System.out.println("클래스 이름 : " + s + "\n" + "슈퍼클래스 이름 : " + s1 + "\n");
}
public static void main(String[] args) {
Button b = new Button(); // 버튼 클래스 속성을 알아보기 위해 버튼 클래스를 생성
getNameSuperClass(b);
getMemberFeilds(b);
getMemberMethods(b);
}
}
'자바(Java) > JAVA 2SE' 카테고리의 다른 글
메모장 프로그램 (0) | 2009.01.27 |
---|---|
java.net.InetAddress - IP주소 (0) | 2009.01.23 |
java.util.Vector - 객체 가변 배열 (0) | 2009.01.14 |
자바 예외 처리(Exception Handling) (0) | 2009.01.14 |
데이터베이스에 SQL문을 수행하고 결과 얻기 (0) | 2009.01.13 |