一、如何得到Class的对象呢?有三种方法可以的获取:下面是结合反射的三个例子,在Eclipse上都可以运行
/*
* 第一种获得Class的对象
*/
/*Class task=Class.forName("com.Task");
Object object=task.newInstance();
Method m=task.getMethod("run",new Class[]{Integer.class,Integer.class});
int s=(Integer)m.invoke(object, new Object[]{1,2});
System.out.println(s);
*/
/*
* 第二种获得Class的对象
*/
/*Task task=new Task();
Class taskClass=task.getClass();
Method m=taskClass.getMethod("run",new Class[]{Integer.class,Integer.class});
int s=(Integer)m.invoke(task, new Object[]{1,2});
System.out.println(s);*/
/*
* 第三种获得Class的对象
*/
Class taskClass=Task.class;
Method m=taskClass.getMethod("run",new Class[]{Integer.class,Integer.class});
int s=(Integer)m.invoke(taskClass.newInstance(), new Object[]{1,2});
System.out.println(s);
//这个是javaBean
public class Task {
public int run( Integer i,Integer j){
return i+j;
}
}
注意:m.invlke(object,new Object[]{})
obj可以为空,但必填null,表示同类中的公用方法,
如:getName( type ) ---- method.invoke( null , args);
参数args是个Object数组,即使只有一个参数,也要建object数组
二、Class的一些使用技巧
1、forName和newInstance结合起来使用,可以根据存储在字符串中的类名创建对象。例如
Object obj = Class.forName(s).newInstance();
2、虚拟机为每种类型管理一个独一无二的Class对象。因此可以使用==操作符来比较类对象。例如:
if(e.getClass() == Employee.class)...