gpt4 book ai didi

java - 如何覆盖 Lombok Setter 方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:47:57 25 4
gpt4 key购买 nike

我在我的项目中使用了 lombok,并使用 @Setters@Getters 生成了 SettersGetters POJO 类之上的注释。我正在尝试覆盖属性的 setter 方法,但它不起作用

我想检查 JSON 属性是 Empty 还是 Null 我想在 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)

我也将此作为引用 here , 但到目前为止还没有运气

最佳答案

要么你遇到了一个我从未见过的错误,要么你测试错了。

像这样的注解

@Setter(AccessLevel.NONE) private String age;

在现场级别确实阻止了生成器的生成。但是鉴于您正在定义一个 setter,您甚至不需要它。显式的 @Setter 也会停止生成。

我刚刚使用 Eclipse 4.7.3a 和 Lombok 1.18.0 尝试了您的示例,并且调用了您的(有问题的)setter。几年来我一直在使用 Lombok,从未遇到过这样的错误。

问题很可能是您的 JSON 反序列化器根本不使用 setter 。我想,您正在测试类似的东西

DefaultModel defaultModel = deserialize("{\"name\":\"some\"}", DefaultModel.class);

而不是直接测试setter。这就是问题所在。

关于java - 如何覆盖 Lombok Setter 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51388545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com