反射是框架设计的灵魂

定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。Java的反射机制允许编程人员在对类未知的情况下,获取类相关信息的方式变得更加多样灵活,调用类中相应方法,是Java增加其灵活性与动态性的一种机制。

总结:反射就是把Java类中的各种成分映射成一个个的Java对象

例如:一个类有:成员变量、方法、构造方法、包等信息,利用反射技术可以对一个类进行解剖,把各个组成部分映射成一个个对象。(其实:一个类中这些成员方法、构造方法、在加入类中都有一个类来描述)

 

  反射机制的相关类

  与Java反射相关的类如下:

  

  Class类

  Class代表类的实体,在运行的Java应用程序中表示类和接口。在这个类中提供了很多有用的方法,这里对他们简单的分类介绍。

 获得类相关的方法

  

获得类中属性相关的方法

  

 

获得类中注解相关的方法

         

获得类中方法相关的方法

  

类中其他重要的方法

  

  Field类

  Field代表类的成员变量(成员变量也称为类的属性)。

  

  Method类

  Method代表类的方法。

  

  Constructor类

  Constructor代表类的构造方法。

  

 

        特点

  尽管反射机制带来了极大的灵活性及方便性,但反射也有缺点。反射机制的功能非常强大,但不能滥用。在能不使用反射完成时,尽量不要使用,原因有以下几点:

  1、性能问题。

  Java反射机制中包含了一些动态类型,所以Java虚拟机不能够对这些动态代码进行优化。因此,反射操作的效率要比正常操作效率低很多。我们应该避免在对性能要求很高的程序或经常被执行的代码中使用反射。而且,如何使用反射决定                     了性能的高低。如果它作为程序中较少运行的部分,性能将不会成为一个问题。

  2、安全限制。

  使用反射通常需要程序的运行没有安全方面的限制。如果一个程序对安全性提出要求,则最好不要使用反射。

  3、程序健壮性。

  反射允许代码执行一些通常不被允许的操作,所以使用反射有可能会导致意想不到的后果。反射代码破坏了Java程序结构的抽象性,所以当程序运行的平台发生变化的时候,由于抽象的逻辑结构不能被识别,代码产生的效果与之前会产生                 差异。

posted @ 2019-07-10 17:06  良月三一  阅读(328)  评论(0编辑  收藏  举报