步骤:先获取类对象
然后获取有参构造
通过有参构造获取对象
public class Zy {
public static void main(String[] args) {
try {
Class<?> stuClass=Class.forName("com.lg.exercise.day020.zy01.Student");
//使用有参构造
Constructor<?> constructor =stuClass.getConstructor(String.class,String.class,int.class,String.class);
Object student=constructor.newInstance("10001","张三",10,"1997-06-25");
Method show=stuClass.getDeclaredMethod("show");
show.invoke(student);
//使用属性name
Field name=stuClass.getDeclaredField("name");
//权限关闭
name.setAccessible(true);
name.set(student,"牛逼");
System.out.println(student);
} catch (ClassNotFoundException e) {
System.out.println("类不存在");
} catch (IllegalAccessException e) {
System.out.println("非法访问");
} catch (InstantiationException e) {
System.out.println("学生类实例化失败");
} catch (NoSuchMethodException e) {
System.out.println("方法未找到");
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
public class Student{
private String id;
private String name;
private int age;
private String borandate;
public Student(String id, String name, int age, String borandate) {
this.id = id;
this.name = name;
this.age = age;
this.borandate = borandate;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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;
}
public String getBorandate() {
return borandate;
}
public void setBorandate(String borandate) {
this.borandate = borandate;
}
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age=" + age +
", borandate='" + borandate + '\'' +
'}';
}
public void show(){
System.out.println(this.toString());
}
}