给定以下具有Lombok注释的类@data
和@superbuilder
@Data
@SuperBuilder
public abstract class Parent {
protected final String userId;
protected final Instant requestingTime;
}
@Data
@SuperBuilder
public class Child extends Parent {
private final Instant beginningDate;
private final Instant endingDate;
private final Collection<String> fields;
}
在子类
中的@data
注释上出现以下错误:
隐式超级构造函数Parent()未定义。必须显式调用另一个构造函数。
我在子类和父类上尝试了@data
、@getter
、@setter
注释与@superbuilder
注释的几种不同组合,但还没有找到一个有效的解决方案。我使用的是Lombok 1.18.10。
供参考,这个问题是相关的
编辑
public Child(
final String userId,
final Instant requestingTime,
final Instant beginningDate,
final Instant endingDate,
final Collection<String> fields) {
super(userId, requestingTime);
this.beginningDate = beginningDate;
this.endingDate = endingDate;
this.fields= fields;
}
final Child child = Child.Builder()
.userId(<value>)
.requestingTime(<value>)
.beginningDate(<value>)
.endingDate(<value>)
.fields(<value>)
.build();
AFAIK,@data
生成@noargsconstructor
,这是错误的。实际上,@data
本身是错误的,因为它是针对可变类的;@value
会更好,但它也不能处理超级构造函数。
因此,删除@data
,添加@getter
、@equalsandhashcode
、@tostring
和您需要的任何东西。不要忘记在子类中添加callsuper=true
。
这实际上是Lombok应该在superbuilder.build()操作上构造和调用的构造函数。
public Child(
final String userId,
final Instant requestingTime,
final Instant beginningDate,
final Instant endingDate,
final Collection<String> fields) {
super(userId, requestingTime);
this.beginningDate = beginningDate;
this.endingDate = endingDate;
this.fields= fields;
}
public Child(ChildBuilder b) {
super(b);
this.beginningDate = b.beginningDate;
this.endingDate = b.endingDate;
this.fields= b.fields;
}
你可以相信Jan Rieke说的,是他写的。
我目前正试图用lombok删除一些样板代码,但遇到了一些问题。 我有一个抽象类AbstractParent, 然后我有一个像这样的儿童班 我还有一些类扩展了Child类 由于Lombok不能在构造函数中使用超级,我尝试了@SuperBuilder注释,而不是手动定义构造函数,但无法启动应用程序。我是不是完全错过了什么?龙目岛和Spring有可能吗? 错误是:
我有以下课程: 为什么我无法在抽象类(< code>Parent)的实例上调用< code>toBuilder(),如下面的代码所示?
我有扩展抽象类的类,我不想把放在所有子类的顶部。 有没有办法为抽象类实现Lombok?
本文向大家介绍抽象类能使用 final 修饰吗?相关面试题,主要包含被问及抽象类能使用 final 修饰吗?时的应答技巧和注意事项,需要的朋友参考一下 不能,定义抽象类就是让其他类继承的,如果定义为 final 该类就不能被继承,这样彼此就会产生矛盾,所以 final 不能修饰抽象类,如下图所示,编辑器也会提示错误信息:
我的班级等级如下: 并尝试将DTO映射到实体 地图如下: 我在详细信息字段中收到带有A或B的DTO,这是在调试器中检查的。但是模型制图者投掷 无法实例化目标组织的实例。包裹基础确保该组织。包裹Base有一个非私有的无参数构造函数。 我尝试使用显式提供程序(没有用于此映射): 我还尝试像这样实现自定义转换器(也没有执行): 模型映射器似乎没有对字段使用这个类型映射,只对hierarhy的根使用。在这
我通过学校为一项任务提供的简报创建了一个飞机座位预订系统。我遇到了一个我无法解决的主要问题。 摘要说明抽象类必须有一个抽象方法和大约4个公共方法。在抽象类的两个子类中,我们都必须初始化对象数组(所有普通的座位)。然而,一旦它们被初始化,我不知道如何将它们发送回抽象类(该类有一个检查未预订的飞机座位的方法,这就是我需要初始化的座位对象的地方) ArrayIndexOutOfBounds在一个应该在边