反射的概念
在运行状态时,我们可以知道类的属性和方法,而且可动态的创建类的对象,只要给定类名,我们就可以得到类的对象和方法属性
反射的原理
由于在编译的时候会生成。class文件,根据这个文件的字节码我们就可以找到这个类以及方法和属性
获取class类的三种方法
Class.forName("类的路径")
类名.Class
实例.getClass
获取对象一共有四种方式
Java中有5种创建对象的方式,下面给出它们的例子还有它们的字节码
使用new关键字 | } → 调用了构造函数 |
使用Class类的newInstance方法 | } → 调用了构造函数 |
使用Constructor类的newInstance方法 | } → 调用了构造函数 |
使用clone方法 | } → 没有调用构造函数 |
使用反序列化 | } → 没有调用构造函数 |
举例:class类反射 Employee emp2 = (Employee) Class.forName("org.programming.mitra.exercises.Employee").newInstance(); Employee emp2 = Employee.class.newInstance();
constructor类的方法
Constructor<Employee> constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance();