黑马程序员_基础加强_内省&JavaBean&Beanutils工具
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
内省 IntroSpector (内部检查)
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可以对属性进行连级使用。
假设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培训、java学习型技术博客、期待与您交流! ------------
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。