什么是反射
反射是Java被视为动态语言的关键,反射机制允许重新执行期间借助反射API 去掉任何类的内部信息,并能直接操作任意对象的内部属性和方法
Class c = Class.forName(“java.lang.String”)
加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象,就这个对象包含了完整的类的结构信息。我们可以通过这个对象看到类的结构,这个对象就像一个镜子一样,透过这个镜子看到类的结构,所以我们形象的称之为反射。
反射机制提供了什么功能
- 在运行是判断一个对象所属的类
- 在运行是购置任意一个类的对象
- 在运行是判断任意一个类所具有的成员变量和方法
- 在运行是获取泛型信息
- 在运行是调用任意一个对象的成员变量和方法
- 在运行是处理注解
- 生成动态代理等等
反射的缺点和优点
优点:
可以实现动态创建对象和编译,提醒出很大的灵活性
缺点:对性能有一定的影响,使用反射基本上是一个解释操作,我们可以告诉JVM,我们希望做什么并且它满足我们的要求,这类操作总是慢于直接执行相同操作。