리플렉션(Reflection)에 대해
Runtime에 클래스를 전달받아서 임의의 method를 실행하는 시스템이 있다고 가정하면 이 때 전달되는 파라미터, return되는 파라미터 모두 개발당시에는 알지 못한다고 하자 이러한 시스템에는 임의의 클래스가 주어졌을 때, 그 클래스에 대한 정보, 다시 말해서 해당 클래스의 생성자 (constructor), 멤버변수, method, 슈퍼 클래스 , 상위 인터페이스에 대한 정보를 얻을 수 있는 기능이 필요하다 이렇게 임의의 클래스에 대한 정보를 얻을 수 있게 해 주는 API가 바로 reflection API이다.
Ex) import java.lang.reflect.*;
Object o;
Class c = o.getClass();
……
Method m = c.getMethod(“setText”, new Class[] {String.class} );
……
import java.lang.reflect.*;
import java.awt.*;
class ReflectionTest {
public static void main(String[] args) {
Button b = new Button();
getNameSuperClass(b);
}
static void getNameSuperClass(Object o) {
Class c = o.getClass();
String s = c.getName();
String s1 = c.getSuperclass().toString();
System.out.println(s + "\n" + s1);
}
}