2016-08-23 44 views
1

Java类中布尔型变量的get方法约定是什么?例如:java布尔型读取方法的命名策略

private boolean qExist; 

public boolean isqExist() { 
    return qExist; 
} 
public void setqExist(boolean qExist) { 
    this.qExist = qExist; 
} 

以上方法都是通过eclipse生成的。而的wsimport在.xsd文件生成“qExist”作为

public boolean isQExist() { 
    return qExist; 
} 
public void setQExist(boolean qExist) { 
    this.qExist = qExist; 
} 

杰克逊JSON序列预计,第一种方法是存在于类否则它附加变量的值(在这种情况下“qexist” - 全部小写)到JSON对象。当它传递给web ui时,由于它期待'qExist',所以javascript不知道该变量。

这可能是Jackson中的一个错误,因为如果布尔变量以两个或多个小写字母开头,那么Jackson将使用上面的第二种方法。

我确实通过告诉杰克逊对象映射器不要查找setters/getters /是值的方法,但看看字段来解决问题。

+5

资本化“Q”是通常的方法。 Eclipse并不那么光明。 – Bohemian

+0

isQExist和setQExist是大多数严格类型语言遵循的标准命名惯例 – Kenshin

+0

作为关于英语的一个注释......'doesQExist'被普遍接受为比isQExist更多语法(并且更自然*)。我倾向于最大限度地提高可读性,而不是过分地遵从java bean规范中不太有用的方面。正如你发现的那样,杰克逊可以被指示直接参考该领域。 – nbrooks

回答

1

通常情况下,你会利用每一个新词 - 无论有多少个字母已经

0

出于好奇是什么将q代表什么?术语“正确”可能取决于您如何在反射中使用getter/setting。我会用:

public boolean isQExist() { 
    return qExist; 
} 
public void setQExist(boolean qExist) { 
    this.qExist = qExist; 
} 
+0

其实getter和setter方法是由wsimport通过maven插件生成的。我认为添加Json注释并不是生成代码的好习惯。感谢您的投入。我只想指出,杰克逊图书馆在单一小写字母与多个序列化事物时失败。 –

0

如果你不想有直接使用领域,你可以只取出紧耦合到POJO结构和使用的标注。

public static final String BLAH_PROPERTY = "qExists"; 

private boolean blah; 

@JsonProperty(BLAH_PROPERTY) 
public boolean isBlah() { 
    return blah; 
} 

@JsonProperty(BLAH_PROPERTY) 
public void setBlah(boolean blah) { 
    this.blah = blah; 
}