我需要向某些类实现的接口(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
方法。