如何覆盖Lombok Setter方法

我使用的龙目岛在我的项目和产生SettersGetters使用@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

回到顶部