Java 继承类的Lombok注释失败

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

我有一个扩展了基类a的类B

A类的规定如下:

@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确实要求您拥有一个默认值(这意味着在父类中没有参数的构造函数)