Java反射
什么是Java反射机制
反射即是在运行时获取类的所有信息的一种功能。
Java反射机制是在运行状态中对于任意一个类,
都能知道这个类的所以属性和方法;
对于任何一个对象,都能够调用它的任何一个方法和属性;
这样动态获取新的以及动态调用对象方法的功能就叫做反射。
反射类
1.java.lang.Class;
2.java.lang.reflect.Constructor;
3.java.lang.reflect.Field;
4.java.lang.reflect.Method;
5.java.lang.reflect.Modifier;
获取Class对象的三种方法。
2. 通过 Class 类可以获取成员变量、成员方法、接口、超类、构造方法等
通过Class对象获取类的所有属性
通过Class对象获取类的所有方法
可以获取指定属性和构造方法
优点:
(1)能够运行时动态获取类的实例,大大提高系统的灵活性和扩展性。
(2)与Java动态编译相结合,可以实现无比强大的功能
缺点:
(1)使用反射的性能较低
(2)使用反射相对来说不安全
(3)破坏了类的封装性,可以通过反射获取这个类的私有方法和属性
所以灵活使用反射能让我们代码更加灵活,这里比如JDBC原生代码注册驱动,hibernate 的实体类,Spring 的 AOP等等都有反射的实现。
但是凡事都有两面性,反射也会消耗系统的性能,增加复杂性等,合理使用才是真!