反射概念是指程序可以访问、检测、修改它本身状态或行为的一种能力
通过反射可以调用私有方法和私有属性。
Java通常是先有类再有对象,对象可以调用对象的方法或者属性。
Java反射则是通过Class对象来调用类里面的方法。
反射就是加载类并解剖出类的各个组成部分。
反射机制主要提供以下功能:
在运行时判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判断任意一个类所具有成员变量和方法
在运行时调用任意一个对象的方法
生成动态代理
相关类
java.lang.Class;
java.lang.reflect.Constructor;
java.lang.reflect.Field;
java.lang.reflect.Method;
java.lang.reflect.Modifier;
优点:
(1) 能够运行时动态获取类的实例,大大提高系统的灵活性和扩展性
(2)与Java动态编译相结合,可以实现无比强大的功能
缺点:
(1)使用反射的性能较低
(2)使用反射相对来说不安全
(3)破坏了类的封装性,可以通过反射获取这个类的私有方法和属性