我需要向某些类实现的接口(interface)添加默认方法,但我的 IDE 提示( bean may not have been initialized )。
代码将是这样的:

public interface IValidator {

    MyValidationBean beanToBeAutowired;
    ...
    default Boolean doSomeNewValidations(){
        return beanToBeAutowired.doSomeNewValidations();
    }
}

是不允许 Autowiring 到接口(interface)还是代码有问题?
在界面上使用 @Component 没有任何区别。

我宁愿保留这种设计而不是使用抽象类。

最佳答案

在 Java 中无法将变量添加到接口(interface)中。默认情况下,它将是一个 public static final 常量。因此,您必须执行以下任一操作:

MyValidationBean beanToBeAutowired = new MyValidationBeanImpl();

或以下内容:
MyValidationBean beanToBeAutowired();

default Boolean doSomeNewValidations(){
    return beanToBeAutowired().doSomeNewValidations();
}

并且您可以覆盖实现类中的 beanToBeAutowired 方法。

10-04 23:04