对于反射机制一些了解

1.什么是反射机制?

   JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

java通常是先有类再有对象,有对象我就可以调用方法或者属性。反射其实是通过Class对象来调用类里面的方法。

 

2.说说反射机制的作用。

(1)在运行时判断任意一个对象所属的类型。

(2)在运行时构造任意一个类的对象。

(3)在运行时判断任意一个类所具有的成员变量和方法。

(4)在运行时调用任意一个对象的方法,甚至可以调用private方法。

 

3.反射机制会不会有性能问题?

  反射机制对性能会有影响,使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它满足我们的要求。这类操作总是慢于只直接执行相同的操作

调用Java的反射API是有较高的性能开销的:

  (1):产生了Dynamic Resolve

无论是通过字符串获取Class、Method还是Field,都需要JVM的动态链接机制动态的进行解析和匹配,势必造成性能开销。

(2):安全性验证

每一次的反射调用都会造成Java安全机制进行额外的安全性验证,造成性能开销。

(3)影响运行时优化

反射代码使得许多JVM的运行时优化无法进行。

你可能感兴趣的:(对于反射机制一些了解)