java布尔读取方法的命名策略

时间:2016-08-23 20:22:57

标签: 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() {
    return qExist;
}
public void setQExist(boolean qExist) {
    this.qExist = qExist;
}

Jackson JSON序列化程序期望第一个方法出现在类中,否则它会将变量的值(在本例中为“qexist” - 全部小写)附加到JSON对象。当它传递给web ui时,javascript不知道变量,因为它期待'qExist'。

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

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

3 个答案:

答案 0 :(得分:1)

通常情况下,你会把每个新单词都大写 - 无论它有多少个字母

答案 1 :(得分:0)

出于好奇,Q代表什么?术语"正确"可能取决于你如何在反射中使用吸气剂/设置。我会用:

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

答案 2 :(得分: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;
}