//使用反射的方式创建一个实例、调用构造函数初始化name、age
Constructor<Person> con = (Constructor<Person>) clazz.getConstructor(String.class,int.class);
Person per = con.newInstance("zhangsan",24);
System.out.println("name:"+per.getName()+" "+"age:"+per.getAge());
//不使用setAge方法直接使用反射方式对age赋值,暴力获取字段。
Field field = clazz.getDeclaredField("age");
//允许反射私有方法
field.setAccessible(true);
//获取字段类型
Class type = field.getType();
if(type.equals(int.class)){
//设置字段值
field.set(per, 98);
//获取字段
int age = field.getInt(per);
System.out.println("直接使用暴力反射方式对字段age赋值:"+age);
}
}
class Person{
private String name;
private int age;
public Person(String name, int age) {
super();
this.name = name;
this.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;
}
}
出错
Exception in thread "main" java.lang.Error: Unresolved compilation problem: