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){...}
如果一个属性只有getter方法,则该属性为只读属性。如果一个属性只有setter方法,则该属性为只写属性。如果一个属性既有getter方法,又有setter方法,则该属性为读写属性。通常来说,在开发JavaBean时,其属性都定义为读写属性。
需要注意的是:对于 JavaBean 属性的命名方式有一个例外情况。如果属性的类型为boolean,它的命名方式应该使用 is/set,而不是 get/set。
例如,有一个 boolean 类型的属性married,该属性所对应的方法声明如下所示。
public boolean isMarried(){...}
public void setMarried(boolean married){...}
BeanUtils工具
BeanUtils下载地址(commons-beanutils包)
logging包下载地址(commons-logging包)
案例分析:
①创建Person.java
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
②创建BeanUtilsDemo.java类
public class BeanUtilDemo {
public static void main(String[] args) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
Person p=new Person();
//使用BeanUtils为属性赋值
BeanUtils.setProperty(p, "name", "老汉");
BeanUtils.setProperty(p, "age", 50);
//使用BeanUtils获取属性值
String name=BeanUtils.getProperty(p, "name");
String age=BeanUtils.getProperty(p, "age");
System.out.println("我的名字是"+name+",我今年"+age+"岁!");
//创建map集合,用于存放属性及其属性值
Map map=new HashMap();
map.put("name","张三");
map.put("age", 50);
//使用populate()方法为对象的属性赋值
BeanUtils.populate(p, map);
//打印赋值后的对象信息
System.out.println("姓名:"+p.getName()+",年龄:"+p.getAge());
}
}
运行结果:



