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该网友文章