我的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有什么意义?
答案 0 :(得分:2)
使用龙目岛@Value
的Altgough,您将获得allArgs构造函数,Gson将不会使用它。请注意,lombok将为您生成allArg构造函数,因此将没有noArg构造函数-但这对Gson来说不是问题(从Gson 2.3.1开始-选中this SO question)。
@NonNull
注释将使lombok在构造函数内部生成空检查,但不会调用该构造函数。这就是为什么Gson会毫无问题地读取您的Json的原因。