如何覆盖Lombok Setter方法
我使用的龙目岛在我的项目和产生Setters
和Getters
使用@Setters
,并@Getters
注解POJO类的顶部。我正在尝试覆盖属性的setter方法,但是它不起作用
我想检查JSON属性是否为空或空,我想在Setter方法中设置默认值
@Setter@Getter
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ToString
public class DefaultModel {
private String name;
@Setter(AccessLevel.NONE)private String age;
public void setAge(String age) {
if(age==null||age.trim().isEmpty()||age.equals("null")) {
this.age="10";
}else {
this.age=age;
}
}
}
工作方案:
{"name":"some",
"age":null
}
{
"name":"some",
"age":"null"
}
{
"name":"some",
"age":" "
}
失败的情况:
{"name":"some"
}
输出:
DefaultModel(name=some, age=null)
回答:
您只是遇到了一个我从未见过的错误,或者您正在测试错误。
像这样的注释
@Setter(AccessLevel.NONE) private String age;
在现场一级确实阻止了设置器的生成。但是考虑到要定义一个setter,您甚至不需要它。显式@Setter
也会停止生成。
我刚刚使用Eclipse 4.7.3a和Lombok1.18.0尝试了您的示例,然后调用了(沼泽)设置器。几年来我一直在使用Lombok,但从未遇到过此类错误。
问题很可能是您的JSON解串器根本不使用setter。 我想,您正在测试类似
DefaultModel defaultModel = deserialize("{\"name\":\"some\"}", DefaultModel.class);
而不是直接测试设置器。这就是问题所在。
以上是 如何覆盖Lombok Setter方法 的全部内容, 来源链接: utcz.com/qa/430375.html