定义:JAVA反射机制是在运行状态中,对于任意一个类,都可以知道这个类的全部属性和方法;对于任意一个对象,都可以调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。Java的反射机制容许编程人员在对类未知的状况下,获取类相关信息的方式变得更加多样灵活,调用类中相应方法,是Java增长其灵活性与动态性的一种机制。java
总结:反射就是把Java类中的各类成分映射成一个个的Java对象android
例如:一个类有:成员变量、方法、构造方法、包等信息,利用反射技术能够对一个类进行解剖,把各个组成部分映射成一个个对象。(其实:一个类中这些成员方法、构造方法、在加入类中都有一个类来描述)编程
反射机制的相关类安全
与Java反射相关的类以下:性能
Class类优化
Class表明类的实体,在运行的Java应用程序中表示类和接口。在这个类中提供了不少有用的方法,这里对他们简单的分类介绍。google
得到类相关的方法对象
得到类中属性相关的方法
得到类中注解相关的方法blog
得到类中方法相关的方法接口
类中其余重要的方法
Field类
Field表明类的成员变量(成员变量也称为类的属性)。
Method类
Method表明类的方法。
Constructor类
Constructor表明类的构造方法。
特色
尽管反射机制带来了极大的灵活性及方便性,但反射也有缺点。反射机制的功能很是强大,但不能滥用。在能不使用反射完成时,尽可能不要使用,缘由有如下几点:
一、性能问题。
Java反射机制中包含了一些动态类型,因此Java虚拟机不可以对这些动态代码进行优化。所以,反射操做的效率要比正常操做效率低不少。咱们应该避免在对性能要求很高的程序或常常被执行的代码中使用反射。并且,如何使用反射决定 了性能的高低。若是它做为程序中较少运行的部分,性能将不会成为一个问题。
二、安全限制。
使用反射一般须要程序的运行没有安全方面的限制。若是一个程序对安全性提出要求,则最好不要使用反射。
三、程序健壮性。
反射容许代码执行一些一般不被容许的操做,因此使用反射有可能会致使意想不到的后果。反射代码破坏了Java程序结构的抽象性,因此当程序运行的平台发生变化的时候,因为抽象的逻辑结构不能被识别,代码产生的效果与以前会产生 差别。