您的位置:首页 > 编程语言 > Java开发

Java中的反射机制和动态性以及javaBean的自省技术

2014-05-12 22:00 281 查看
Java中的反射机制和动态性以及javaBean的自省技术

反射机制:

在java中,在运行过程中去调用一个编译时完全不知道的类的属性和方法,这种动态的调用方式叫做反射机制。(自己写的)

简单的写就是:可以让java程序在运行过程中动态的去调用类的属性、方法(包括一般方法和构造方法)。

Java反射机制在javaAPI中的类是 java.lang.reflect.

重点:

获取对象的属性和方法

获取方法:(一般方法)

获取方法的方法有:下列方法中的返回的参数类型为Method类型或数组类型

(不带参数)

getDeclareMethods() 获取方法(包括接口中的方法不包含继承中的方法)

getMethods()获取方法(包括继承和接口中的方法—为所有的方法)

(带参数类型)

getDeclareMethods(String str,class [] args) 其中class [] args表示返回方法中所带的参数类型

getMethods(String str,class [] args)

获取构造方法:返回值类型:Constructor 数值或者数组

用法同上。

getDeclareConstructors ()

getConstructors ()

newInstance(Object ..initargs) //通过参数来构造类的实例

获取属性:

获取方法的方法有:下列方法中的返回的参数类型为Field类型或数组类型

(不带参数)

getDeclareFields() 获取属性(包括接口中的方法不包含继承中的属性)

getFields ()获取属性(包括继承和接口中的方法—为所有的属性)

(带参数类型)

getDeclareFields(name)

java中的动态调用

动态调用属性,修改属性

中间用对象.setAccessible()方法来设置属性的访问权限为可以访问即使是private属性也可以访问,但是只是针对去此对象,而其他对象一样是不可以访问的。

通过set(obj a,obj b)将属性a改成属性b。get(obj a)方法来对属性进行修改。

动态调用方法:(注:动态代理也是AOP的)

通过特定的方法名获取得到method对象,通过method对象来调用invoke(obj,参数);来调用相应的obj对象中特定的方法。

Method类中关键方法:

Object invoke (Object obj ,Object .. args) //该方法能够调用obj实例的方法,方法参数为args,invoke方法可以动态的调用任何类的任何方法,并返回方法的返回值。

还有就是操作动态数组/多维动态数组

中间用到是reflect包中自带的一个array数组

javaBean自省技术

javaBean 具有的自省机制可以在不知道javaBean都有哪些属性的情况下,设置他们的值。。

自省机制的核心是反射机制。

javaBean的自省机制主要由Introspector实现,该接口中提供了关键的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: