当前位置: 首页 > 知识库问答 >
问题:

使用@RequiredArgsConstructor Lombok的父类的子类在父类中找不到默认构造函数

羊舌自强
2023-03-14

我正在用Lombok插件做一个Spring项目。我添加了注释,并使父类的字段最终初始化,使用@AllArgsConstructor或@必需ArgsConstructor而不是字段注入(使用类字段的@autowed)。但是,由于某种原因,子类DraftsPostmethod报告了一条消息,即在父类AbstractFuntoryServicemethod中没有找到默认构造函数

我不确定是什么导致了它,因为我在其他类上也做了同样的事情(添加了注释),以Lombok的方式初始化它们。

该子类报告一个错误,该错误读取为"有没有可用的默认构造函数...抽象贡献服务方法”

子类:

@Service
public class DraftsPostMethod extends AbstractContributoryServiceMethod<DraftManagementRequest, 
    BasicServiceModel<DraftManagementRequest>,
    BasicServiceResponse<Void>> {
    
    private final Validator<DraftManagementRequest> validator = new Validator<DraftManagementRequest>(){
        @Nonnull
        @Override
        public ValidationState validate(DraftManagementRequest draftManagementRequest){
            return ValidationState.commence();
        }
    };
    
    private final DraftService draftService;
    
    @Autowired
    public DraftsPostMethod(DraftService draftService){ // getting the red line error here
        this.draftService = draftService;
    }
    //...and so on...
}

父类:

@RequiredArgsConstructor
public abstract class AbstractContributoryServiceMethod {
    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
    
    private final ExceptionManager exceptionManager; //this line was @Autowired private ExceptionManager exceptionManager
    private final ValidationErrorTranslator validationErrirTranslator; //this line was @Autowired private ValidationErrorTranslator validationErrirTranslator
    private final ExceptionDetailsLogger exceptionDetailsLogger; //this line was @Autowired private ExceptionDetailsLogger exceptionDetailsLogger
    
    //... and so on...
}

如有任何意见或答案,我将不胜感激。谢谢你。

共有1个答案

鲜于凯歌
2023-03-14

Lombok的@NoArgsConstructor注释将生成它正在寻找的默认构造函数。

https://projectlombok.org/features/constructor

 类似资料:
  • 问题内容: 我有一个“ ChildClass”类,它扩展了“ ParentClass”类。我不想完全替换父类的构造函数,而是要先调用父类的构造函数,然后再做一些额外的工作。 我相信默认情况下会调用父类的0参数构造函数。这不是我想要的 我需要用参数调用构造函数。这可能吗? 我试过了 但这不起作用,因为您无法修改“ this”。 问题答案: 您可以从子代的构造函数中以“ super”引用父代的构造函数

  • 我在Java有一个简单的亲子实现。父类看起来像: 和子类类似于: 当我打电话的时候 我希望BasePage构造函数也能运行并设置配置数据。但BasePage构造函数根本不运行。我不明白为什么。有人能告诉我为什么吗?谢谢.

  • 因此,我有了类、、和。由于类有很多setter和getter,所以我决定将代码放在pastebin中: LogBookEntry 驱动程序 数据库 汽车 因此,正如您在数据库中所看到的,我有两个函数来加载和保存XML数据。 如您所见,类的日期不会保存到XML文件中。这就是为什么我在加载xml文件时会出现以下错误的原因: Okt 22,2017 3:36:33 PM com.sun.xml.inte

  • 所以我在学习java继承,我遇到了一个我不知道如何解决的问题。 我要做的是从超类中调用一个子类构造函数。我不知道这是否有任何意义,但我会尝试用一个例子来解释我自己。 我为什么要这么做? 我希望能够主要不必处理智能手机。 我希望能够做到:

  • 我想创建一个抽象的父类,其中包含方法公共抽象使用();和使用方法在不同的子类是不同的,但利用父方法的所有Rest,但我希望父类包含一个私有变量,但它需要设置从特定的孩子取决于孩子所以像我有一个家长车,我想与汽车一般工作,但为特定目的的use()方法和设置汽车图像我使用保时捷类这是一个孩子。我不希望汽车图像属性是可访问的,但同时如果它的私人我不能从子构造函数设置它,有什么想法吗?我的问题是如何设置一

  • 问题内容: 我试图给我的子类默认变量,并在文件变胖时停止重复代码: 当然可以,但是我想以同样的方式初始化,只是用真实的字符串覆盖(所有登录样式都是相似的)。 为什么我什么都没得到属性,该如何解决?谢谢 请注意,删除基类默认设置会导致其他问题 解决了: 问题答案: 您必须将参数从init 传递到以下内容的init块: 在您的代码中,调用init时不带参数,因此采用其默认参数all 。