- 反射的概念:
反射是指程序可以访问、检测和修改它本身的状态和形为的一种能力,并根据自身形为的状态和结果,调整和修改程序所描述的形为的状态和相关语义。 反射是java中一强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以在运行时装配,无须在组件之间进行源码链接。但反射使用不当会使成本很高。
- 反射的作用:
- 反编译:.class-->.java
- 通过反射机制访问java对象的属性,方法,构造方法等;
- sun为我们提供的反射机制的类:
-
java.lang.Class;
java.lang.reflect.Constructor; java.lang.reflect.Field;
java.lang.reflect.Method;
java.lang.reflect.Modifier;
- 具体实现:
- 反射机制获取类有三种方法
/** * java中获取类有三种方法 * 1.通过类名来获取 * 2.java中每个类型都有class 属性. * 3.java语言中任何一个java对象都有getClass 方法 */ Class clazz = Class.forName("test_reflect.Test_Reflect"); clazz = Test_Reflect.class; clazz = new Test_Reflect().getClass();
- 创建对象:获取类以后我们来创建它的对象,利用newInstance:
Test_Reflect reflect = (Test_Reflect) clazz.newInstance();
-
获取属性:分为所有的属性和方法:
Field fields[] = clazz.getFields(); for (int i = 0; i < fields.length; i++) { System.out.println(fields[i].getName()); } Method[] methods = clazz.getMethods(); for (int i = 0; i < methods.length; i++) { System.out.println(methods[i].getName()); }
- 反射机制获取类有三种方法