【问题标题】:boolean (Boolean) - getter is vs getboolean (Boolean) - getter is vs get
【发布时间】:2014-02-18 10:59:38
【问题描述】:

看起来每个人都说正确的吸气剂:

  • 原始布尔值 -> getter
  • object Boolean -> getter get

例子:

public class Test {

    private boolean primitive;
    private Boolean object;

    public boolean isPrimitive() {
         return primitive;
    }
    public Boolean getObject() {
        return object;
    }
    //..
}

问题:

是否有任何规范或文档表明这是正确的并且这是为布尔值指定 getter 的方法?或者这只是一个普遍的假设?

我问是因为例如 wsimport 为布尔对象生成 getter is。这是一个工具错误,还是允许和纠正的?

另一方面,一些框架不能与这些吸气剂一起正常工作。例如 JSF (EL) 或 Dozer。

【问题讨论】:

  • 引用变量最粗俗的名字是object
  • is 在我看来只有当布尔名称是形容词而不是名词时才有效。
  • @CeilingGecko 许多库不同意。通常在处理抽象/超类型时...... Gson,例如...... JsonElement.isJsonArray()
  • is 听起来不太对劲时,我有时会使用has XD
  • @user1600770:我也是。但仅限于没有期望类遵循 bean 规范的地方。

标签: java wsimport


【解决方案1】:

boolean myField 字段的 getter 方法是getMyfield()isMyField()(由用户选择)。我个人使用第二种格式,就像许多源代码生成工具一样。

此格式是一个标准,在JavaBeans 规范中定义。请参阅本文档的第 8.3.2 节http://download.oracle.com/otndocs/jcp/7224-javabeans-1.01-fr-spec-oth-JSpec/

引用自文档:

In addition, for boolean properties, we allow a getter method to match the pattern:

  public boolean is<PropertyName>();

文档没有讨论像 Boolean 类这样的原始包装器。

【讨论】:

  • ...更不用说规范甚至没有提到布尔属性;)
【解决方案2】:
// "is" used because the value can be either true or false. It's like asking isTrue?
public boolean isPrimitive() {
     return primitive;
}

// "get" is used because the value returned can be either true, false or null.  
// So, the third state 'null' makes you wonder if 'is' should be used or 'get'.
// "get" is more appropriate as Boolean can also have null.
public Boolean getObject() {
    return object;
}

但坦率地说,它留给了开发人员。在布尔值上使用 getBoolean() 并没有什么“错误”(is 更有意义,就是这样)。

【讨论】:

    猜你喜欢
    • 2012-10-09
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2016-01-12
    • 1970-01-01
    • 2013-09-18
    相关资源
    最近更新 更多