package com.hk.ztry;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class TestReflect
{
private Class<?> classType;
public TestReflect(String name) throws Exception
{
this.classType = Class.forName(name);
}
public TestReflect()
{
}
//(1)获取方法
public void getMethod()
{
Method[] methods = this.classType.getDeclaredMethods();
for(Method method : methods)
{
System.out.println(method);
}
}
//(2)通过反射调用方法
public void invokeMethod() throws Exception
{
Class<?> my_classType = TestReflect.class;
//注意,这里一定要有空的构造函数,否则报错
Object TestReflect_object = my_classType.newInstance();
Method add_Method = my_classType.getMethod("add", new Class[] { int.class,int.class });
Object result = add_Method.invoke(TestReflect_object, new Object[] { 1, 2 });
System.out.println(result);
}
//(3)生成对象
public void constructObject() throws Exception
{
Class<?> my_classType = TestReflect.class;
Constructor cons_string = my_classType.getConstructor(new Class[] {String.class});
//调试发现,这个确实是Double类型,但是,如何使用呢
Object obj_Typedouble = cons_string.newInstance(new Object[] {"java.lang.Double"});
}
public int add(int param1, int param2)
{
return param1 + param2;
}
public static void main(String[] args) throws Exception
{
TestReflect t1=new TestReflect("java.lang.String");
t1.getMethod();
t1.invokeMethod();
t1.constructObject();
}
}
http://www.cnblogs.com/mengdd/archive/2013/01/26/2877972.html
参考文献的地址·