学习笔记之 -- 反射生成对象实例的方法
下面分为两类处理方式:一类是加载有参构造函数;另一类是加载无参构造函数。
- 动态加载无参构造方法
public class Cat{
public void Cat(){}
}
import java.lang.reflect.Constructor;
publc class LoadCat{
public static void main(String args[ ]){
Class clazz = Class.forName("Cat");
Cat test = (Cat)clazz.newInstance();
}
}
- 动态加载有参构造函数
public void Cat(){}
}
publc class LoadCat{
public static void main(String args[ ]){
Class clazz = Class.forName("Cat");
Cat test = (Cat)clazz.newInstance();
}
}
在用Class.forName方法动态加载构造方法带参数的类时,为了将参数传递进去,可以考虑java的反射机制,比如有一个类如下:
public class Cat{
private int age;
private String name;
public void Cat(String name, int age){
this.name = name;
this.age = age;
}
}
如果想用Class.forName方法动态加载这个类,可以用以下类似的代码实现:
import java.lang.reflect.Constructor;
publc class LoadCat{
private int age;
private String name;
public void LoadCat(String name, int age){
super();
this.name = name;
this.age = age;
}
public static void main(String args[ ]){
Class clazz = Class.forName("Cat");
Constructor constructor = clazz.getConstructor(String.class, int.class);
LoadCat test = (LoadCat) constructor.newInstance("test", 1);
}
}
本文部分参考:http://www.douban.com/note/153914983/