JavaBean需满足公共类、无参构造、私有属性、getter/setter及序列化;其命名规范要求普通属性用get/set前缀,布尔类型优先is前缀,内省机制依此解析属性名。

JavaBean 是 Java 中一种特殊的类,主要用于封装数据,它遵循一定的规范,以便在各种框架(如 Spring、Struts)和工具中被广泛使用。其中 setter 和 getter 方法的命名规则是 JavaBean 规范的核心部分之一。
JavaBean 的基本规范
一个类要被称为 JavaBean,必须满足以下条件:
- 必须是一个公共类(public class)
- 必须提供无参构造方法(可以是默认的)
- 属性私有化(private 修饰字段)
- 通过 public 的 getter 和 setter 方法访问属性
- 实现 Serializable 接口(建议,用于序列化)
setter 和 getter 命名规则
JavaBean 对 getter 和 setter 方法的命名有严格要求,这样工具和框架才能通过内省(Introspection)机制自动识别属性。
1. 普通属性(非布尔类型)- getter 方法:以 get 开头,后接属性名的首字母大写形式,返回值为对应类型
- setter 方法:以 set 开头,后接属性名的首字母大写形式,接受一个参数,无返回值
示例:
立即学习“Java免费学习笔记(深入)”;
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;
}
2. 布尔类型属性
- getter 方法:可以使用 is 或 get 开头
- 推荐使用 is 开头,特别是对于基本类型 boolean
- setter 方法:仍以 set 开头
示例:
立即学习“Java免费学习笔记(深入)”;
private boolean active;
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
3. 特殊情况:以 is 开头的布尔属性名
- 如果属性本身以 "is" 开头(如
isOpen),getter 必须是isIsOpen(),但这种情况不推荐 - 更推荐直接用
open作为属性名,getter 为isOpen()
- 属性名为
firstName,则 getter 为getFirstName(),setter 为setFirstName() - 不能写成
getfirstname()或SetFirstName()
内省机制如何识别属性
Java 的内省机制(如 java.beans.Introspector)会根据方法名解析出属性名:
- 发现
getName()和setName(),会推断出存在一个叫name的属性 - 方法名去掉前缀(get/set/is),并将剩余部分首字母小写,即为属性名
例如:getUserName() → 属性名 userName
常见错误与注意事项
- 大小写敏感:getter 方法必须是
getAge,不能是getage - boolean 类型不要用
getFinished(),应优先用isFinished() - 避免多余的 setter/getter,否则会被识别为额外属性
- 静态字段不会被识别为 JavaBean 属性










