public static void main(String[] args) throws Exception {
Class pClass = Class.forName("jdj.Person");
//遍历整个控制器
Constructor[] constructors=pClass.getDeclaredConstructors();
for(Constructor con:constructors) {
System.out.println(con);
}
//通过控制器创建对象
Constructor con_1=pClass.getConstructor(String.class);
con_1.setAccessible(true); //private类都需要进行暴力反射才可以使用
Person p1=(Person) con_1.newInstance("aaa");
//添加基本类型的数据
Field nameField=pClass.getDeclaredField("name"); //姓名
nameField.setAccessible(true);
nameField.set(p1, "张三");
System.out.println(nameField.get(p1));
Field ageField=pClass.getDeclaredField("age"); //年龄
ageField.set(p1, 45);
System.out.println(ageField.get(p1));
Field sexField=pClass.getDeclaredField("sex"); //性别
sexField.set(p1, '男');
System.out.println(sexField.get(p1));
Field heightField=pClass.getDeclaredField("height");
heightField.set(p1, 175);
System.out.println(heightField.get(p1));
//添加方法类型
Method method1=pClass.getMethod("run");
method1.invoke(p1);
System.out.println(method1);
Method method2=pClass.getMethod("run",String.class);
method2.invoke(p1,"李逵");
System.out.println(method2);
Method method3=pClass.getDeclaredMethod("flay",String.class);
method3.setAccessible(true);
method3.invoke(p1, "松江");
System.out.println(method3);
//注意: public类的方法 getMethod和getDeclaredMethod两种都可以调取 private只能使用getDeclaredMethod调取
}
以下为要调用的person类中的方法 控制器 基本数据变量
private String name;
public Integer age;
Character sex;
protected Integer height;
private Person() {
}
public Person(String name,Integer age,Character sex,Integer height ) {
this.name = name;
this.age = age;
this.sex = sex;
this.height = height;
}
public Person(String name) {
this.name = name;
}
//在java当中 方法名和参数列表
public void run() {
System.out.println("人跑的很快");
}
public void run(String name) {
System.out.println(name+"人跑的很快");
}
private void flay(String name) {
System.out.println(name+"会飞");
}
Integer getAge() {
return age;
}
public void hhh(Integer age,Character sex) {
System.out.println(age + " " + sex);
}