public class Bean {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Bean(String name){
this.name=name;
}
public Bean(int id,String name){
this.id=id;
this.name=name;
}
public String toString() {
return "id="+this.id+" name="+this.name;
}
}
public class Bean2 {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Bean2(){
}
public Bean2(String name){
this.name=name;
}
public String toString() {
return "name="+this.name;
}
}
测试:
public class ReflectTest {
public static void main(String[] args) throws Exception {
Bean2 b2=(Bean2) test1(Bean2.class);
System.out.println(b2);
Bean bean=(Bean)test2(Bean.class);
System.out.println(bean);
//传不同的Class就能得到不同的对象
Bean2 b=(Bean2)test2(Bean2.class);
System.out.println(b);
Bean bea=(Bean)test3(Bean.class);
System.out.println(bea);
}
public static Object test1(Class clazz) throws Exception{
Object obj=null;
obj=clazz.newInstance();//这种方式只能构造出有无参数的构造方法的对象出来
return obj;
}
public static Object test2(Class clazz) throws Exception{
Object obj=null;
Constructor con=clazz.getConstructor(String.class);//只要构造方法带有一个String型的对象都可以
obj=con.newInstance("test2");
return obj;
}
public static Object test3(Class clazz) throws Exception{
Object obj=null;
Constructor con=clazz.getConstructor(int.class,String.class);只要构造方法带有一个int和String型的对象都可以,注意int与String顺序
obj=con.newInstance(22,"张明学");
return obj;
}
}