Java反射机制的浅显理解(这篇文章还没写好,留个草稿给自己看的)

  目前只是有一个大概的理解,先把自己感觉容易立即的概念放这里,等以后结合实际工作理解深刻了再来补充。

一.什么是Java反射机制?(多种定义)

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

二. java反射机制的作用?(多种说法,意思可能相同或重复)

  1.Java反射机制容许程序在运行时加载、探知、使用编译期间完全未知的classes。换言之,Java可以加载一个运行时才得知名称的class,获得其完整结构。

  2.通过Java反射机制,可以在程序中访问已经装载到JVM(java虚拟机)中的java对象的描述,实现访问、检测和修改描述Java对象本身信息的功能。

三. 获取类的Class对象

  Class 类的实例表示正在运行的 Java 应用程序中的类和接口。获取类的Class对象有多种方式:

  1. 通过getClass()

    众所周知,所有的Java类均继承了Object类,在Object类中定义了一个getClass()方法,该方法返回一个类型为class的对象。代码如下:  

  JTextField textField = new JTextField();
  Class textFieldC = textField.getClass();

    利用Class类的对象textFieldC,可以访问textField对象的描述信息。

  2. 运用static method Class.forName()  

Class<?> classType5 = Class.forName("java.lang.Boolean");
System.out.println(classType5);

    输出:class java.lang.Boolean。

  3. 运用.class 语法

Class<?> classType4 = Boolean.class;
System.out.println(classType4);

    输出:class java.lang.Boolean

 四. 通过反射可访问的主要描述信息有:包路径、类名称、继承类、实现接口、构造方法、方法、成员变量、内部类等等,具体内容请参见《Java从入门到精通(实例版)》第九章

  内容。(容续)

 五. 实例

  比如通过xml文件加载某个类,该类中调用了另一个类的某一个变量,但是在编译期间系统是不知道具体是哪个类的,到了运行期间,加载了xml文件后,需要动态的使用该类的变量,这是便用到了放射机制。

六.参考资料

  1. 《Java从入门到精通(实例版)》第九章内容;

  2. http://blog.csdn.net/yongjian1092/article/details/7364451该网友文章

原文地址:https://www.cnblogs.com/tjudzj/p/4450708.html