文章目录
1.反射机制
- 正射:使用这个类之前,我们知道这个类,也知道该类的所有属性和方法。随后我们通过new关键字来实例化对象,并通过引用操作该对象,该过程称之正射。
- 反射:可以理解为是正射的逆过程。起初并不知道要初始化什么类,而是拿到一个对象,通过反射API来获取这个对象的类对应的java.lang.Class类对象,并通过这个java.lang.Class类对象来访问属性及方法。
综上,反射其实就是我们创建对象过程的逆向过程:
上图表述略有不正确,通过反射API,得到的是一个java.lang.Class类的对象,通过操作这个java.lang.Class类的对象,获取类原本的各种信息
2.获取java.lang.Class对象
假设有一个类,全限定名为"com.xyx_eshang.entity.MyClass",
可以通过下面三种方式来获取java.lang.Class类的对象:
MyClass.class
Class.forName("com.xyx_eshang.entity.MyClass")
new MyClass().getClass()
3.反射的运用——简单工厂模式
假设有接口"com.xyx_eshang.entity.Fruit",
Apple、Orange、Banana…为该接口的实现类,
可以编写一个简单工厂,实现传入实现类的全限定名,来动态生成Fruit对象