黑马程序员_java高新javaBean内省

------------------android培训java培训、期待与您交流! -------------------

内省 IntroSpecter

IntroSpector 视察,检查-->操作javaBean-->特殊的java类,她里面的方法要按照某种规则来取。方法前面以set或者get打头

一个类中的某些方法以set或者get打头,那么这个类就可以称之为javaBean

javaBean的属性是按照这个类中的set或者get打头的方法来确定的

class Person

{

     privateint x;

     public int getAge()

    {

       return x ;

    }

    public void setAge(int age)

   {

     this.x = age;

   }

}

如上面的代码,如果是在普通java类中,x就叫做这个java类的属性

但是其实我们看不到它在类中封装的名字,所以,在javaBean中属性是按照这个类中的set或者get打头的方法来确定的,也就是说在javaBean中这个属性就叫做Age。

javaBean的属性名是去掉get和set之后得到的那个名字就是javaBean的属性名,

javaBean的属性名的命名规则:

如果第二个字母是小写的,则把第一个字母变成小写的 Age-->age

如果第二个字母是大写的,那么第一个字母就保持原样大写。CPU-->CPU

如果要在两个模块之间传递多个信息,可以把这些信息封装到一个JAVABean中,这种javaBean的实例对象通常称之为值对象(Value-Object).这些信息在类中用私有字段来存储,如果读取或者设置这些字段的值,则需要通过一些相应的放发来访问

一个类被当做javaBean使用时,javaBean的属性是根据方法名推断出来的,所以,它是看不到java类内部的成员变量的

使用javaBean的好处:

在javaEE开发中。及工厂要使用到javaBean。很多环境就要求按javaBean方式进行操作,JDK中提供了对javaBean进行操作的一些API,这套APi就是内省

① IntroSpecter类

Introspector类(内省):Introspector类分析 bean 的类和超类,把目标 Java Bean 支持的属性、事件和方法的显式或隐式信息构建一个全面描述目标bean BeanInfo 对象。

方法:

static BeanInfogetBeanInfo(Class<?> beanClass) Java Bean 上进行内省,了解其所有属性、公开的方法和事件。

static BeanInfogetBeanInfo(Class<?> beanClass, Class<?> stopClass) 在给定的“断”点之下,在Java Bean 上进行内省,了解其所有属性和公开的方法。

static BeanInfogetBeanInfo(Class<?> beanClass, int flags) Java Bean 上进行内省,了解其所有属性、公开的方法和事件,并将结果用一些控制标记表示。

② BeanInfo接口:该类实现此 BeanInfo接口并提供有关其 bean 的方法、属性、事件等显式信息。

方法:

MethodDescriptor[]getMethodDescriptors() 获得 beans MethodDescriptor。

PropertyDescriptor[]getPropertyDescriptors() 获得 beans PropertyDescriptor。

③ PropertyDescriptor类:描述 Java Bean的一个属性。

构造方法:

PropertyDescriptor(StringpropertyName, Class<?> beanClass) 为符合标准 Java 约定的属性构造一个PropertyDescriptor。

PropertyDescriptor(StringpropertyName, Class<?> beanClass, String readMethodName,String writeMethodName) 此构造方法带有一个简单属性的名称和用于读写属性的方法名称。

PropertyDescriptor(StringpropertyName, Method readMethod, Method writeMethod) 此构造方法带有某一简单属性的名称,以及用来读取和写入属性的 Method 对象。

方法:

Class<?> getPropertyType()获得属性的 Class 对象。

MethodgetReadMethod() 获得应该用于读取属性值的方法(get方法)。

MethodgetWriteMethod() 获得应该用于写入属性值的方法(set方法)。

void setReadMethod(Method readMethod) 设置应该用于读取属性值的方法。

void setWriteMethod(Method writeMethod) 设置应该用于写入属性值的方法。

④ Beanutils工具包

在工程下方加入jar包的方式:

1.右键工程->new->folder(在工程下面创建一个文件夹用于装工具jar包)

2.把jar包存入新建好的这个目录下

3.右键工程下面新加入的jar包->builder path->add to builder path(把jar包导入MyEclipse)

BeanUtils工具包的运用

BeanUtils类:该类处理属性的时候是以字符串的方式来处理的。比如属性本身是int类型的,那么他处理这个属性的时候就会把int类型的数据包装称字符串,然后进行设值或者取值(取出来的值也是一个字符串)。

方法:

BeanUtils.getProperty(Object pbj,String PropertyName)

BeanUtils.setProperty(Object pbj,String PropertyName,Object value)

在BeanUtils中,它的get方法和set方法里面的操作值的都是String类型的。因为在web中,传输过来的信息多是以String形式包装过来的

BeanUtils可以对属性进行连级使用。

Eg:

假设Person类中有一个getName方法,返回值是String类型的

BeanUtils.name.class 这里得到的结果就是一个String.class的Class对象。

static void copyProperty()

⑤ PropertiyUtils类:该类处理属性的时候是以属性本身具备的类型来处理的,比如属性本身是int类型的,那么他处理这个属性的时候就以int类型来处理

PropertiyUtils.getProperty(Objectpbj,String PropertyName)

PropertiyUtils.setProperty(Objectpbj,String PropertyName,Object value)

 

---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值