java布尔读取方法的命名策略
Java类中布尔变量的正确get方法约定是什么。例如:java布尔读取方法的命名策略,java,json,jackson,Java,Json,Jackson,Java类中布尔变量的正确get方法约定是什么。例如: private boolean qExist; public boolean isqExist() { return qExist; } public void setqExist(boolean qExist) { this.qExist = qExist; } 以上方法由eclipse生成。而wsimport在.xsd文件中生成'qExist',如下所示: public boolean isQExist() {
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;
}
Jackson JSON序列化程序希望第一个方法出现在类中,否则它会将变量的值(在本例中为“qexist”-全部小写)附加到JSON对象。当它传递到web ui时,javascript不知道该变量,因为它需要'qExist'
这可能是Jackson中的一个错误,因为如果布尔变量以两个或更多小写字母开头,则Jackson使用上面的第二个方法
我告诉Jackson对象映射器不要为值查找setter/getter/is方法,而是查看字段,从而解决了这个问题。通常,你会将每个新词大写,不管它有多少个字母,出于好奇,Q代表什么?术语“正确”可能取决于您在反射中如何使用getter/设置。我将使用:
public boolean isQExist() {
return qExist;
}
public void setQExist(boolean qExist) {
this.qExist = qExist;
}
如果您不想直接使用该字段,那么只需移除与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;
}
将“Q”大写是常用的方法。Eclipse并没有那么明亮。isQExist和setQExist是大多数严格类型语言中遵循的标准命名约定,如英语注释……
doesQExist
被普遍认为比isQExist
更符合语法(更自然)。我更喜欢最大限度地提高可读性,而不是过分遵从JavaBean规范中不太有用的方面。正如您所发现的,可以指示Jackson直接引用该字段。实际上,getter和setter方法是由wsimport通过maven插件生成的。我认为在生成的代码中添加Json注释不是一个好的实践。谢谢你的投入。我只想指出,当序列化内容时,jackson库只有一个小写字母而不是多个小写字母时,它会失败。