Java反射机制详解
2015-04-06 10:01
218 查看
一.什么是反射机制
1.Java反射是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods。
2.Java反射机制容许程序在运行时加载、探知、使用编译期间完全未知的classes。
3.Java可以加载一个运行时才得知名称的class,获得其完整结构。
二:Reflection API
获取类的Class对象
获取类的Fields
getFields返回的是申明为public的属性,包括父类中定义,
getDeclaredFields返回的是指定类定义的所有定义的属性,不包括父类的。
获取类的Method
获取类的Constructor
新建类的实例
调用类的方法
该方法的第一个参数是一个对象类型,表示要在指定的这个对象上调用这个方法
第二个参数是一个可变参数,用来给这个方法传递参数值;
invoke方法的返回值用来表示动态调用指定方法后的实际返回值。
参考:Java反射机制详解
1.Java反射是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods。
2.Java反射机制容许程序在运行时加载、探知、使用编译期间完全未知的classes。
3.Java可以加载一个运行时才得知名称的class,获得其完整结构。
二:Reflection API
获取类的Class对象
获取类的Fields
getFields返回的是申明为public的属性,包括父类中定义,
getDeclaredFields返回的是指定类定义的所有定义的属性,不包括父类的。
获取类的Method
获取类的Constructor
新建类的实例
调用类的方法
Class<?> classType = ExtendType.class; //获取ExtendType类的class对象 Object inst = classType.newInstance(); //创建实例 Method logMethod = classType.getDeclaredMethod("Log", String.class); //获取 ExtendType类的带String参数的Log方法 logMethod.invoke(inst, "test"); //使inst实例调用Log方法,并把“test”参数传入
使用反射可以取得指定类的指定方法的对象代表,方法的对象代表就是java.lang.reflect.Method类的实例,通过Method类的invoke方法可以动态调用这个方法。 public Object invoke(Object obj, Object... args) throws IllegalAccessException,IllegalArgumentException, InvocationTargetException
该方法的第一个参数是一个对象类型,表示要在指定的这个对象上调用这个方法
第二个参数是一个可变参数,用来给这个方法传递参数值;
invoke方法的返回值用来表示动态调用指定方法后的实际返回值。
注意:若要通过反射调用类的某个私有方法,可以在这个私有方法对应的Method对象上,先调用setAccessible(true)来取消Java语言对本方法的访问检查,然后再调用invoke方法来真正执行这个私有方法。
参考:Java反射机制详解
相关文章推荐
- 【转】java反射机制详解
- java反射机制详解!
- java反射机制详解
- java反射机制详解 及 Method.invoke解释
- java反射机制详解
- Java反射机制详解
- java反射机制详解 及 Method.invoke解释 getMethod
- Java反射机制深入详解
- Java反射机制的实现详解
- JAVA反射机制入门(二)--getMethods()系列方法特例详解
- Java反射机制详解
- Java反射机制详解
- [转载]java反射机制详解 及 Method.invoke解释
- Java反射机制详解
- Java反射机制详解与实例
- JAVA反射机制详解
- java反射机制详解 及 Method.invoke解释
- java反射机制详解 及 Method.invoke解释
- java反射机制基础详解(转)
- JAVA反射机制详解