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());
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
}
}
编写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
}
}