如何解决如何在 lombok 中使用 Singular 属性添加
Foo foo = ..;
FooActivity fa = ..;
foo.fooActivity(fa); // this fails - compilation error
@Builder
class Foo {
@Singular("fooActivity")
private List<FooActivity> fooActivities;
}
解决方法
你试过这样的事情吗?
Foo myFoo = Foo.builder()
.fooActivity(new FooActivity())
.fooActivity(new FooActivity())
.build();
,
{
"Token" : "Token 1"
}
将与 configuration["token"]
注释一起使用。因此,在这种情况下,将元素添加到列表的 @Singular
方法是在 lombok 生成的 @Builder
类中创建的,它不是 fooActivity
的一部分。因此,您无法使用 FooBuilder
对象访问 Foo
。
如何解决?(这种方法有问题,我在最后提到过。)
您可以通过将 fooActivity
注释的 Foo
设置为 toBuilder
来解决此问题。这将在 true
中生成一个方法,该方法将返回一个构建器对象,您可以使用它来调用 @Builder
。
Foo
上述方法的问题
fooActivity
将使用 @Builder(toBuilder = true)
public class Foo {
@Singular("fooActivity")
private List<FooActivity> acts;
}
// To invoke
foo = foo.toBuilder().fooActivity(fa).build();
中的值生成一个构建器,而 toBuilder()
将生成一个 NEW 对象。因此您需要小心这一点,因为原始对象 foo
不是使用这种方法更新的对象。
第二种方法(不推荐)
使用实验性功能 build
。龙目岛 website 是这样说的:
目前我们认为此功能不会很快退出实验状态,如果将来的 javac 或 ecj 版本使该功能难以继续维护,则可能会放弃对该功能的支持。
当您的班级中有多个集合时,这也会导致问题。
foo
调用
@Delegate
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。