我收到以下错误:


错误:类CommonCtx中的构造函数Commonctx无法应用于
给定类型;
必需:org.springframework.core.env.Environment
找到:没有参数原因:实际和正式参数列表的不同
长度。


使用的代码:

@Component
@PropertySource("file:${input.file.loc}")
public class CommonCtx implements IContext {

    private String tempDir;

    @Autowired
    public CommonCtx(Environment inputProperties) {

        tempDir = inputProperties.getProperty("temp.dir");
...
}

@Component
@Conditional(cond1.class)
@PropertySource("file:${input.file.loc}")
public class NewCCtx extends CommonCtx implements NewCContext{

    private String productName;

    /**
     * @param inputProperties
     */
    @Autowired
    public NewCCtx(Environment inputProperties) {
        this.productName = inputProperties.getProperty("product.name");
    }

最佳答案

在此构造函数中:

public NewCCtx(Environment inputProperties) {
    this.productName = inputProperties.getProperty("product.name");
}


您应该使用适当的参数显式调用超级构造函数(CommonCtx):

public NewCCtx(Environment inputProperties) {
    super(inputProperties);
    this.productName = inputProperties.getProperty("product.name");
}


由于您的父类没有零参数构造函数,因此这是必需的。

08-05 16:57