Java 继承类的Lombok注释失败
我有一个扩展了基类a的类B A类的规定如下:Java 继承类的Lombok注释失败,java,inheritance,constructor,lombok,java-9,Java,Inheritance,Constructor,Lombok,Java 9,我有一个扩展了基类a的类B A类的规定如下: @RequiredArgsConstructor(onConstructor = @__(@Inject)) public class A { @Getter(AccessLevel.PROTECTED) private final AccessDao accessDao; @Getter private final EntityFactory entityFactory; // member func
@RequiredArgsConstructor(onConstructor = @__(@Inject))
public class A {
@Getter(AccessLevel.PROTECTED)
private final AccessDao accessDao;
@Getter
private final EntityFactory entityFactory;
// member functions
}
public class B extends A {
private final AdditionalDao additionalDao;
public B (AccessDao accessDao, EntityFactory entityFactory, AdditionalDao additionalDao) {
super(accessDao, entityFactory);
this.additionalDao = Preconditions.checkNotNull(additionalDao);
}
// Member functions
}
B类如下所示:
@RequiredArgsConstructor(onConstructor = @__(@Inject))
public class A {
@Getter(AccessLevel.PROTECTED)
private final AccessDao accessDao;
@Getter
private final EntityFactory entityFactory;
// member functions
}
public class B extends A {
private final AdditionalDao additionalDao;
public B (AccessDao accessDao, EntityFactory entityFactory, AdditionalDao additionalDao) {
super(accessDao, entityFactory);
this.additionalDao = Preconditions.checkNotNull(additionalDao);
}
// Member functions
}
在类B之前添加@RequiredArgsConstructor(onConstructor=@u u(@Inject))
会在Intellij中产生以下错误
Lombok在基类中需要一个默认构造函数
RequiredArgsConstructor是否正在基类中创建构造函数?最好的方法是什么
是否使用任何Lombok构造函数注释删除派生类中的构造函数
注意:如果我在基类中使用本线程中建议的noargsconstuctor
,同样的情况也适用。但这样我就不能从派生类调用super方法
RequiredArgsConstructor是否正在基类中创建构造函数
是的。但在您的情况下,lombok将创建包含所有final
字段的构造函数,因为您使用@RequiredArgsConstructor
,它们是final
Lombok在基类中需要一个默认构造函数
但是lombok确实要求您拥有一个默认值(这意味着在父类中没有参数的构造函数)