包括有构造函数和无构造函数的例子
无构造函数的实体类:
package reflect;
/**
* 无构造函数
* @author LD
*
*/
public class Man {
private String name;
private int age;
//获取用户信息
public void getUserInfo(){
System.out.println("name:"+name+",age:"+age);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
有构造函数的实体类:
package reflect;
/**
* 有构造函数
* @author LD
*
*/
public class Woman {
private String name;
private int age;
public Woman(String name, int age){
this.name = name;
this.age = age;
}
//获取用户信息
public void getUserInfo(){
System.out.println("name:"+name+",age:"+age);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package reflect;
import java.lang.reflect.Constructor;
/**
* 测试类
* @author LD
*
*/
public class ReflectTest {
public static void main(String[] args) throws Exception {
//正常调用无构造函数
Man p = new Man();
p.setName("Peter");
p.setAge(20);
p.getUserInfo();
//正常调用有构造函数
Woman women = new Woman("Alice", 18);
women.getUserInfo();
//使用反射调用无构造函数类的方法
Class<?> clazz = Class.forName("reflect.Man");
Man man = (Man)clazz.newInstance();
man.setName("Fly");
man.setAge(21);
man.getUserInfo();
//使用反射调用有构造函数类的方法
Class<?> clazz2 = Class.forName("reflect.Woman");
Constructor<?> constructor = clazz2.getConstructor(String.class, int.class);
Woman woman = (Woman)constructor.newInstance("Kate",19);
woman.getUserInfo();
}
}
结果:
name:Peter,age:20
name:Alice,age:18
name:Fly,age:21
name:Kate,age:19