Eg.

boolean isCurrent = false;

你怎么命名它的getter和setter?


当前回答

假设你有

boolean active;

Accessors方法

public boolean isActive(){return this.active;}

public void setActive(boolean active){this.active = active;}

另请参阅

Java编程/Java Beans Java编程语言的代码约定

其他回答

对于名为isCurrent的字段,正确的getter / setter命名是setCurrent() / isCurrent()(至少Eclipse是这样认为的),这是非常令人困惑的,可以追溯到主要问题:

首先,您的字段不应该被称为isCurrent。Is是动词,动词不适用于表示对象的状态。使用形容词来代替,你的getter / setter名字会变得更有意义:

private boolean current;

public boolean isCurrent(){
    return current;
}

public void setCurrent(final boolean current){
    this.current = current;
}
private boolean current;

public void setCurrent(boolean current){
    this.current=current;
}

public boolean hasCurrent(){
    return this.current;
}

强烈建议使用形容词来命名布尔字段。如果您使用IntelliJ生成getter和setter,您将发现对于布尔字段current和isCurrent, getter都是isCurrent()。

我们可以看一下IntelliJ社区源代码,它的测试数据显示,无论你的布尔字段名是否以is开头,getter的名字都是以is开头。

class Getter {
  boolean foo;
  boolean isBar;
  boolean hasBaz;

  @java.lang.SuppressWarnings("all")
  public boolean isFoo() {
      return this.foo;
  }

  @java.lang.SuppressWarnings("all")
  public boolean isBar() {
      return this.isBar;
  }

  @java.lang.SuppressWarnings("all")
  public boolean isHasBaz() {
      return this.hasBaz;
  }
}

当你想调用getter时,当你的布尔字段名以is开头时,你会很困惑。此外,当您的同事想要获得您定义的布尔字段的值时,他们将只知道getter的名称而不是字段的名称。在这种情况下,前缀is是不必要的。

这里是另一个例子,当我从数据库检索数据来实例化一个Employee对象时,isRetired的值总是false。因为Java没有找到合适的setter,布尔字段的值总是默认值,比如false,这是不期望的。

class Employee{
    private int age;
    private boolean isRetired;

    ...
    public boolean setRetired(boolean isRetired){
        this.isRetired = isRetired;
    }
}

假设你有

boolean active;

Accessors方法

public boolean isActive(){return this.active;}

public void setActive(boolean active){this.active = active;}

另请参阅

Java编程/Java Beans Java编程语言的代码约定

Setter: public void setCurrent(boolean val)
Getter: public boolean getCurrent()

对于布尔值,也可以使用

public boolean isCurrent()