黑马程序员—JAVA高新技术之JavaBean

来源:互联网 发布:半条命剧情知乎 编辑:程序博客网 时间:2024/05/16 07:51

JavaBean

    JavaBean的内省操作是java中对特殊的java类的反射,说白了也就是对java类的反射,不过现在反射的类是javabean,javabean 是这样一种特殊的类,他封装了许多私有的属性,这个属性可以是基本类型,也可以是引用类型,接着提供了对这些属性的访问器和修改器,就是我们说的get方法和set方法。不过java中提供了专门操作javabean的工具类。之所以有必要提供专门的javabean操作工具,是因为javabean的特殊结构。

 

    其中对JavaBean操作的 有PropertyDescriptor这个属性描述符,但是他只是在你知道javabean的前提下,对已知的javaBean 的属性的获取,如果属性未知则不能创建对象。以为PropertyDescriptor 是描述特定的javabean属性的类,没有属性则不能获取对象。

 

JavaBean的属性名的命名规则:

1)类中所有的属性最好定义为私有的
2)类中定义函数setXxx()和getXxx()来对属性进行操作。其中Xxx是首字母大写的私有变量名称。 
例如:
class Person{
private int x;

//因为只需要设置,没有返回值,需要传入参数
void setAge(int age){
return x;

//因为只需要得到,就要有返回值,不需要传入参数 
int getAge(){
this.x = age;
}


可以不用都要写
如果只需要设置一个值,就只用set,不用get

若第二个字母是小写的,则把第一个字母变成小写的  getAge-->age

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


内省的简单操作

PropertyDescriptor,描述 Java Bean的一个属性。获取属性名称及对象后使用getReadMethod或getWriteMethod方法返回一个Method对象,最后再调用invoke()。

构造方法:

BeanUtils工具包的应用: 

BeanUtils类处理成员属性的时候,是以字符串的方式来处理的。

 

方法:

BeanUtils.getProperty(Object pbj,String PropertyName)

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

在BeanUtils中,get方法和set方法里面的操作值的都是String类型的。 

PropertiyUtils类:

PropertiyUtils类处理成员属性时,按成员属性自身的类型来处理。

PropertiyUtils.getProperty(Object pbj,String PropertyName)

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



import java.beans.*;

import java.lang.*;

public class TestBean{

public static void main(String args[])  throws Exception{

Students stu=new Students('wangying',24);

PropertyDescriptor pd=new PropertyDescriptor('name',stu.getClass());

Method methodGetName=pd.getReadMethod();

System.out.println(methodGetName.invoke(stu));

Method methodSetName=pd.getWriteMethod();

methodSetName.invoke(stu,'fengxin');

System.out.println(methodGetName.invoke(stu));

}

 

0 0
原创粉丝点击