我一直在尋找最近在java中的反思,我想出了一個簡單的例子使用思考:如何檢驗方法
Reflection.java
import java.lang.reflect.*;
public class Reflection{
}
public static void main(String args[])
{
try {
Class cls = Class.forName("Method");
Method methlist[]
= cls.getDeclaredMethods();
for (int i = 0; i < methlist.length;
i++) {
Method m = methlist[i];
System.out.println("name
= " + m.getName());
System.out.println("decl class = " +
m.getDeclaringClass());
Class pvec[] = m.getParameterTypes();
for (int j = 0; j < pvec.length; j++)
System.out.println("
param #" + j + " " + pvec[j]);
Class evec[] = m.getExceptionTypes();
for (int j = 0; j < evec.length; j++)
System.out.println("exC#" + j
+ " " + evec[j]);
System.out.println("return type = " +
m.getReturnType());
System.out.println("-----");
}
}
catch (Throwable e) {
System.err.println(e);
}
}
}
Method.java
public class Method {
private int f1(
Object p, int x) throws NullPointerException
{
if (p == null)
throw new NullPointerException();
return x;
}
從上面的例子我能夠返回所有信息從Method.java
看起來像這樣
name = f1
decl class = class Method
param #0 class java.lang.Object
param #1 int
exC#0 class java.lang.NullPointerException
return type = int
-----
name = main
decl class = class method1
param #0 class [Ljava.lang.String;
return type = void
-----
但我的問題是,有沒有辦法從Reflection.java
喜歡的東西
int x = cls.getMethod("f1", Object = anObject, Integer.TYPE = 2)
System.out.println(x);
和控制檯應該打印出2,因爲F1是傳遞的對象測試Method.java
?
謝謝你,它的工作完美,很好地解釋爲好,理解好了很多,現在...謝謝:) – newSpringer 2012-08-03 16:29:30