당신이 찾고있는 기능은 Reflection Java 프로그래밍 언어입니다.
실행중인 Java 프로그램이 프로그램 자체의 내용을 검사하거나 "내부 관찰"하고 프로그램의 내부 속성을 조작 할 수있게합니다. 예를 들어, Java 클래스가 모든 구성원의 이름을 가져 와서 표시 할 수 있습니다.
는
의 호출을위한 http://java.sun.com
import java.lang.reflect.*;
public class DumpMethods {
public static void main(String args[])
{
try {
Class c = Class.forName(args[0]);
Method m[] = c.getDeclaredMethods();
for (int i = 0; i < m.length; i++)
System.out.println(m[i].toString());
}
catch (Throwable e) {
System.err.println(e);
}
}
}
에서 간단한 예 :
java DumpMethods java.util.Stack
출력은 : 여기
public java.lang.Object java.util.Stack.push(
java.lang.Object)
public synchronized
java.lang.Object java.util.Stack.pop()
public synchronized
java.lang.Object java.util.Stack.peek()
public boolean java.util.Stack.empty()
public synchronized
int java.util.Stack.search(java.lang.Object)
실행시에 오브젝트를 생성 한 예이다 :
import java.lang.reflect.*;
public class constructor2 {
public constructor2()
{
}
public constructor2(int a, int b)
{
System.out.println(
"a = " + a + " b = " + b);
}
public static void main(String args[])
{
try {
Class cls = Class.forName("constructor2");
Class partypes[] = new Class[2];
partypes[0] = Integer.TYPE;
partypes[1] = Integer.TYPE;
Constructor ct
= cls.getConstructor(partypes);
Object arglist[] = new Object[2];
arglist[0] = new Integer(37);
arglist[1] = new Integer(47);
Object retobj = ct.newInstance(arglist);
}
catch (Throwable e) {
System.err.println(e);
}
}
}
당신은 자세한 내용을보실 수 있습니다 그것에 대해 here 및
here - for indepth view 또한 이쪽을 봐 : What is reflection and why is it useful?
당신이 시나리오를 줄 수, 당신이 어디에 사용할 것인가? 자바 리플렉션은 느리고 일반적으로 캐스팅에 필요하지 않습니다. 어쩌면 더 좋은 방법이 있을까요? – Tim