我有一个POJO定义如下:
@Value
public class Abc {
@NonNull
private final String id;
@NonNull
private final Integer id2;
@NonNull
private final List<String> data;
@NonNull
private final String otherData;
}
我在做的时候
GSON.fromJson(str, Abc.class);
以str作为:
{
"id": "dsada",
"id2": 12,
"data": ["dsadsa"]
}
在此,没有otherData字段。即使这样,GSON.fromJson也不会失败。为什么会这样呢?然后,将字段标记为@NonNull有什么意义?
最佳答案
使用lombok @Value
的Altgough,您会得到一个allArgs构造函数,Gson将不会使用它。请注意,lombok将为您生成allArg构造函数,因此将没有noArg构造函数-但这对Gson来说不是问题(从Gson 2.3.1开始-检查this SO question)。@NonNull
批注将使lombok在构造函数内部生成空检查,但不会调用该构造函数。这就是为什么Gson会毫无问题地阅读您的Json的原因。
关于java - 即使标记为@NonNull,如果未提供某些字段,Gson.fromJson也不会失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56827743/