1,获取字节码对象的三种方式
1)通过类名.class获取
2)通过Object类的成员方法getClass()方法获取
3)通过Class.forName("带包类名")方法获取
2,通过反射创建对象
Class aClass=Class.forName("com.dyh.StudentDemo");
Constructor constructor= aClass.getConstructor(String.class,int.class);
StudentDemo student= (StudentDemo) constructor.newInstance("张三",23);
System.out.println(student);
先选定调用的类的位置,获取Student类的构造方法,利用构造方法实例化对象,输出对象信息
Student类代码
public class StudentDemo {
private String name;
private int age;
public void study() {
System.out.println("学习");
}
public void study(String name, int time) {
System.out.println("学习的科目是: " + name + "学习的时间是:" + time);
}
public StudentDemo() {
}
public StudentDemo(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "StudentDemo{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
紧接上面,调用Student类中的study方法
Method method=aClass.getMethod("study");
method.invoke(student,null);
就会打印出学习
而后可一调用其带参的方法
Method method1=aClass.getMethod("study",String.class,int.class);
method1.invoke(student, "英语",23);
以上打印的结果为
StudentDemo{name='张三', age=23}
学习
学习的科目是: 英语学习的时间是:23