有没有办法修改@Setter
注释,为通过lombok构建的所有set方法添加一些自定义逻辑。
我有一个类,其字段使用一些默认值进行初始化。现在我只想在值不为空时在字段中设置值。
示例,生成的内容 -
public void setFoo(int foo) {
if (foo != null) {
this.foo = foo;
}
}
例如,如果我在Jersey Update Request类中使用@Setter
注释,而不是像 -
if (request.getFoo() != null) {
this.foo = request.getFoo();
}
我应该可以直接做 -
this.setFoo(request.getFoo());
有一些结果。
答案 0 :(得分:1)
我假设您打算使用Integer
而不是int
,它不允许空值,因此可以解决您的问题:)
一般情况下,我不建议更改setFoo
的逻辑。默默地不在任意条件下设置foo
会将其用法暴露给错误或至少是误解。
我的建议是使用明确命名为setFooIfNotNull(Integer foo)
的自定义方法。一种可能的替代解决方案是使用注释foo
标记字段@NonNull
,以便在空值的情况下抛出NullPointerException。
来自Lombok @Setter
注释documentation 'small print':
字段上名为@NonNull(不区分大小写)的任何注释都是 解释为:此字段不得保持为null。因此,这些 注释会在生成的setter中生成显式空值检查。
答案 1 :(得分:0)
您可以通过评论@Setter&添加自己的自定义设置器@Getter of lombok然后取消注释它。否则你可以用@ lombok.experimental.Tolerate标记任何方法来隐藏它们从lombok。
答案 2 :(得分:0)
我要添加此答案,因为Sumeet的日期到2019年已经过时。
您只需编写自己的方法即可提供自己的getter或setter逻辑。
package com.example;
import lombok.Getter;
@Getter
public class Foo {
//Will not generate a getter for 'test'
private String test;
//Will generate a getter for 'num' because we haven't provided our own
private int num;
public String getTest(){
if(test == null){
throw new Exception("Don't mind me, I'm just a silly exception");
}
return test;
}
}