我读过其他关于龙目岛的构建器和继承的问题,但没有一个解决方案奏效。使用Lombok版本1.18.4和Java11。
public interface FooInterface {
String getFoo();
}
@Data
@SuperBuilder
public abstract class AbstractFoo implements FooInterface {
@Builder.Default
private final String foo = "foo";
}
和实际的foo
实现:
@Data
@SuperBuilder
public class FooTest extends AbstractFoo {
private final String bar;
}
我希望龙目岛
final FooInterface fooTest = FooTest.builder.foo("string").bar("string").build();
assertThat("string").equals(fooTest.getFoo());
assertThat("string").equals(fooTest.getBar());
问题是,IntelliJ突出显示了@data
注释,并带有以下错误:
Lombok需要基类中的默认构造函数。
如果从footest
中删除@data
,则会出现以下错误:
基类中没有可用的默认构造函数。
因此,我从abstractfoo
中删除了@superbuilder
,并添加了一个带有所有参数的手动创建的构造函数。错误仍然存在。我尝试过其他的方法和注释组合,但都不奏效。
我还尝试将所有abstractfoo
字段设置为protected final
,并声明Foo实现本身final
,这与我的业务规则是一致的,但没有成功。
@superbuilder
不受当前版本的IntelliJ IDEA插件支持。
Project的Github Tracker-https://Github.com/mplushnikov/lombok-intellij-plugin/issues/513上有一个公开的问题
虽然它的目标是几天前才发布的0.25版本-https://github.com/mplushnikov/lombok-intellij-plugin/releases/tag/releasebuild_0.25
问题似乎仍未解决,尚未落实。
我建议只尝试0.25版本,如果它不起作用,等待下一个版本。
我有一个具有单个抽象基类和几个子类的类层次结构。基类有25个字段,每个子类有一个额外的0-8个字段。 生成器模式和继承 对Java Builder类进行子类化 如何在龙目岛调用超级构造函数 然而,他们没有一个谈到有一个“基构建器”,每个子构建器都是它的一个子类。因此,我无法确定使用泛型,函数的第二个参数应该是什么。
Java Lombok库:继承的生成器注释问题 创建子类的实例时,父类属性在生成器注释中不可见。 以下失败: 然而,下面的说法是正确的: 似乎这个问题已经存在很长时间了,不知道最新版本是否有任何修正。
问题内容: 可以说我有一个散列,例如 存储这种数据结构的“通常”方式是什么(或者您不会吗?) 您是否可以直接获得价值(例如,获取哈利:年龄? 一旦存储,您是否可以直接更改子键的值(例如,sally:weight = 100) 问题答案: 存储这种数据结构的“通常”方式是什么(或者您不会吗?) 例如,哈利(Harry)和莎莉(Sally)将分别存储在单独的散列中,其中字段代表其属性,例如年龄和体重。
使用Lombok使用Eclipse/Maven生成代码。希望能够在文本中查看正在生成的类。在目标下四处搜寻,但什么也没看到。有没有办法让Lombok输出生成的类?
请建议应用继承时如何使用。 我有一个抽象类和具体的。应该是不可变的。将放在两者上会导致两个错误: null 我很乐意删除并使用构建器方法,但我正在重构一个公共库(试图优化模型类),我不希望在我的客户端上出现编译错误。 我还发现了解释第二个错误的这个问题。但其意图的逻辑并不清楚https://github.com/rzwitserloot/lombok/issues/945
我有两个类,其中父类在构建时需要来自子类的一些属性。有没有一种方法可以使用lombok构建器来支持这一点? Parent.java 小孩JAVA 上面的编译失败,并显示消息 错误:无法从静态上下文@SuperBuilder引用非静态方法getRequest estType()