原理理解
在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性.这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制.
总结一句话,就是能把java类中的各种成分映射成一个个的Java对象.
思路:想要操作类,就必须先获得该类的字节码对象Class.通过Class提供的方法对类进行进一步的解剖,从而实现各种操作.
反射的用途
Java 反射机制是一个非常强大的功能,在很多的项目比如 Spring,MyBatis 都都可以看到反射的身影。通过反射机制,我们可以在运行期间获取对象的类型信息。利用这一点我们可以实现工厂模式和代理模式等设计模式,同时也可以解决 Java 泛型擦除等令人苦恼的问题。
反射的实现
获取一个对象对应的反射类,在 Java 中有下列方法可以获取一个对象的反射类
- 通过
getClass()
方法 - 通过
Class.forName()
方法 - 使用
类.class
- 通过类加载器实现,
getClassLoader()