Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java布尔读取方法的命名策略_Java_Json_Jackson - Fatal编程技术网

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

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() {

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中的一个错误,因为如果布尔变量以两个或更多小写字母开头,则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库只有一个小写字母而不是多个小写字母时,它会失败。