黑马程序员Java学习笔记__javaBean的内省机制

来源:互联网 发布:mac邮箱软件推荐 编辑:程序博客网 时间:2024/04/28 11:23
                                                         -------android培训java培训、期待与您交流! ----------

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

以set、get开头的类称之为javaBeanjavaBean的属性是按照这个类中的set或者get开头的方法来确定的如:

class Person

{

     Private int a;

     public int getAge()

    {

       return a;

    }

    public void setAge(int age)

   {

     this.x = age;

   }

}

如上面的代码,如果是在普通java类中,a就叫做这个java类的属性不过一般封装好后,看不到内部变量的名字。所以在javaBean中属性是按照这个类中的set或者get打头的方法来确定的,也就是说在javaBean中这个属性就叫做Age。

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

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

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

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

作为javaBean的类,其属性是根据方法名推断出来的,所以它是看不到java类内部的成员变量的

使用javaBean的好处:在javaEE开发中。使用javaBean很好的保证了数据的安全,相当于 前台到后台代码多了一层保护 机制,数据的传递不是公开的。很多环境就要求按javaBean方式进行操作,JDK中提供了对javaBean进行操作的一些API,这套APi就是内省

1)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 上进行内省,了解其所有属性、公开的方法和事件,并将结果用一些控制标记表示。

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

方法:MethodDescriptor[]getMethodDescriptors() 获得 beans MethodDescriptor。PropertyDescriptor[]getPropertyDescriptors() 获得 beans PropertyDescriptor。

3)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) 设置应该用于写入属性值的方法。

4)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可以对属性进行连级使用。

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

PropertiyUtils.getProperty(Objectpbj,String PropertyName)

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

                                                          -------android培训java培训、期待与您交流! ----------
0 0
原创粉丝点击