您的位置:首页 > 职场人生

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

2014-06-17 16:10 453 查看
                                                         -------
android培训java培训、期待与您交流!
----------
IntroSpector 视察,检查-->操作javaBean-->特殊的java类,她里面的方法要按照某种规则来取。方法前面以set或者get开头。
以set、get开头的类称之为javaBean。javaBean的属性是按照这个类中的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<?> bean
4000
Class, 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培训、期待与您交流!
----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息