黑马程序员_Java_JavaBean讲解

来源:互联网 发布:涵曦瘦身霜有害知乎 编辑:程序博客网 时间:2024/06/07 06:01
JavaBean是一个可以重复使用的Java类,主要功能是用来封装业务逻辑(功能实现)、数据库操作等。
编写JavaBean就是编写一个Java类,这个类创建的对象称作一个Bean为了能使用这个Bean的应用程
序构建工具,知道这个Bean的属性和方法,只需要在类的方法命名上遵守以下规则:
1.如果类的成员变量的名字是xxx,那么为了更好的获取成员变量的值,即更改或获取属性
   在类中可以使用两个方法:getXXX():用来获取属性xxx
  setXXX():用来修改属性xxx
2.对于boolean类型和成员变量,即布尔逻辑类型的属性,允许使用“is”代替以上的“get”和“set”
3.类中方法的访问属必须是public的
4.类中如果没有构造方法,那么这个构造方也是public的并且没有参数

JavaBean的设计中属性的不同作用可以分为4类,分别为简
单属性设置、索引属性设置、束缚属性设置、限制属性设置。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
JavaBean类实例
import java.io.Serializable;

public class JavaBeanDemo implements Serializable{//实现了Serializable接口
JavaBean(){} //  无参构造函数
private int id;     //私有属性Id
private String name;//私有属性name
public int getId(){
return Id;
}
public void setId(int id){   //set()方法
this.id = id;
}
public String getName(){  //get()方法
return name;
}
public void setName(String Name){
this.name = name;
}
}

可以发现JavaBen只是一个普通类,只是遵循了一定的规范,成为一个JavaBean类

如果要你自己去通过getX方法来访问JavaBean中私有的x,怎么做,有一定难度吧?
用内省这套api操作JavaBean比用普通类的方式更方便。
示例:
//创建一个JavaBean类
public class ReflectPoint {
       private int x ;
       private int y ;
      
       public ReflectPoint(int x, int y) { //构造函数
             super();
             this.x = x;
             this.y = y;
      }

      public int getX() {  return x ; }
      public void setX(int x) {  this.x = x; }//set()方法
      public int getY() { return y ; }//get()犯法
      public void setY(int y) { this.y = y; }

}


------------------------------------------------------------------------------------
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;

public class ReflectTest {
       public static void main(String[] args) throws Exception {
         ReflectPoint pt1 = new ReflectPoint(3, 5);//  创建一个JavaBean实例对象
        
         String propertyName = "x"; //获得JavaBean中的一个成员变量名
         
PropertyDescriptor pd1 = new PropertyDescriptor(propertyName, pt1.getClass());  

                                                                                                                 //创建一个属性描述器PropertyDescriptor,将变量名和对应的类字节码文件作为参数传入

         Method readMethod = pd1.getReadMethod();    //获得JavaBean中具有read的方法,这里已将JavaBean需要的变量名传递给pt1,所以知道是哪个方法,只需要获得
         Object retVal = readMethod.invoke(pt1); //获得方法后调用
         System. out.println(retVal);
         //结果:3
        
         PropertyDescriptor pd2 = new PropertyDescriptor(propertyName, pt1.getClass());
         Method writeMethod = pd2.getWriteMethod();//获得JavaBean中具有write的方法,
         Object value = 7;
         writeMethod.invoke(pt1,value);
         System. out.println(pt1.getX());
         //结果:7
       }
}
0 0