目录
案例:演示使用setProperty()、getProperty()和populate()方法访问JavaBean的属性
前言
在软件开发时,一些数据和功能需要在很多地方使用,为了方便将它们进行“移植”,Sun公司提出了一种JavaBean技术,使用JavaBean可以对这些数据和功能进行封装,做到“一次编写,到处运行”。
一、什么是JavaBean?
JavaBean是Java开发语言中一个可以重复使用的软件组件,它本质上就是一个Java类,为了规范JavaBean的开发,Sun公司发布了JavaBean的规范,它要求一个标准的JavaBean组件需要遵循一定的编码规范,具体如下:
(1)它必须具有一个公共的、无参的构造方法,这个方法可以是编译器自动产生的默认构造方法。
(2)提供公共的setter方法和getter方法,让外部程序设置和获取JavaBean的属性。
示例:
public class Book {
private double price;
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
二、访问JavaBean的属性
在讲解面向对象时,经常会使用类的属性,类的属性指的是类的成员变量。在JavaBean中同样也有属性,但是它和成员变量不是一个概念,它是以方法定义的形式出现的,这些方法必须遵循一定的命名规范,例如,在JavaBean中包含一个String类型的属性name,那么在JavaBean中必须至少包含getName()和setName()方法中的一个,这两个方法的声明如下所示:
public String getName(){...}
public void setName(String name){...}
getName()方法:称为getter方法或者属性访问器,该方法以小写的get 前缀开始,后跟属性名,属性名的第一个字母要大写,例如,nickName属性的getter方法为getNickName()。
setName()方法:称为setter方法或者属性修改器,该方法必须以小写的set 前缀开始,后跟属性名,属性名的第一个字母要大写,例如,nickName属性的setter方法为setNickName()。
如果一个属性只有getter方法,则该属性为只读属性,如果一个属性只有setter方法,则该属性为只写属性,如果一个属性既有getter方法,又有setter方法,则该属性为读写属性。通常来说,在开发JavaBean时,其属性都定义为读写属性。
需要注意的是,对于JavaBean属性的命名方式有一个例外情况,如果属性的类型为boolean,它的命名方式应该使用is/set而不是get/set。例如有一个boolean类型的属性married,该属性所对应的方法声明如下所示:
public boolean isMarried(){...}
public void setMarried(boolean married){...}
从上面的代码可以看出,married属性的setter方法命名方式没有变化,而getter方法变成了isMarried()方法 ,当然,如果一定要写成getMarried()也是可以的,只不过isMarried()更符合命名规范。
示例:
public class Student {
private String sid;
private String name;
private int age;
private boolean married;
// age属性的getter和setter方法
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
// married属性的getter和setter方法
public boolean isMarried() {
return married;
}
public void setMarried(boolean married) {
this.married = married;
}
// sid属性的getter方法
public String getSid() {
return sid;
}
// name属性的setter方法
public void setName(String name) {
this.name = name;
}
public void getInfo() {
System.out.print("我是一个学生");
}
}
三、BeanUtils工具
大多数Java程序开发人员过去习惯于创建JavaBean,然后通过调用JavaBean属性对应的getter和setter方法来访问属性。但是,由于各种Java工具和框架层出不穷,并不能保证属性对应的getter和setter方法总能被调用,因此动态访问Java对象的属性是十分必要的,为此,Apache软件基金会提供了一套简单、易用的API——BeanUtils工具。
BeanUtils工具包的官网首页地址为“http://commons.apache.org/proper/commons-beanutils”,登录到官网首页后,单击左边菜单栏【BEANUTILS】【Download】选项,即可跳转到BeanUtils的下载页面,如下图所示。
解压下载后的文件便可获得BeanUtils开发所需的JAR包。需要注意的是,BeanUtils工具包还需要一个logging包来配合使用,logging包中包装了各种日志API的实现,感兴趣的读者可以进入官网(http://commons.apache.org/proper/commons-logging)下载。
BeanUtils工具中封装了许多类,其中最核心的是org.apache.commons.beanutils包下的BeanUtils类,接下来,针对BeanUtils类的常用方法进行简单的介绍,具体如表所示。