自动生成 POJO 时 boolean(Boolean) 域的问题

按:有一种编程建议是,避免对 boolean 变量使用 is 打头的命名方式,尽量回避这种问题。

用 Eclipse 的代码自动生成 getter, setter,发现碰到逻辑型的域有个问题:

  1. 如果域 isXxx 是基本类型 boolean,则生成 isXxx, setXxx
  2. 如果域 isXxx 是封装类型 Boolean,则生成 getIsXxx, setIsXxx

下面是一个具体的例子,注意黑体的地方。

public class HelloPojo {
    private String name;
    private boolean isMale;
    private Boolean isOld;
   
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public boolean isMale() {
        return isMale;
    }
    public void setMale(boolean isMale) {
        this.isMale = isMale;
    }
    public Boolean getIsOld() {
        return isOld;
    }
    public void setIsOld(Boolean isOld) {
        this.isOld = isOld;
    }
   
}

查了一圈网站,对于 boolean/Boolean 型的域对应的 getter and setter 究竟应该用哪个,是有争论的。为了保险起见,对于 boolean 这个基本型,也用 getIsXxx and setIsXxx 的形式好了

    private boolean isMale;
    public boolean getIsMale() {
        return isMale;
    }
    public void setIsMale(boolean isMale) {
        this.isMale = isMale;
    }

类似的讨论:

  1. http://stackoverflow.com/questions/1118261/what-is-the-correct-syntax-for-is-variable-getter-setters-in-a-pojo-class
  2. http://lydawen.iteye.com/blog/402347