在一个抽象类中,我有以下定义:
protected abstract A expectedA(B b);
protected Function<A, B> createExpectedA(Long foo) {
return a -> { ... return b}}
然后我想用
createExpectedA
的return函数覆盖抽象函数,如下所示: @Override
protected Function<A, B> expectedA = createExpectedA(fee);
但是,这给了我以下错误:
该位置不允许使用注释@Override
如何在Java8中做我想做的事?
最佳答案
注释Override
只能用于方法,而不能用于字段,这就是为什么会出现此错误的原因。提醒一下,这是Javadoc:
指示方法声明旨在覆盖方法
超类型中的声明。如果方法带有此注释
注释类型编译器需要生成错误消息
除非至少满足以下条件之一:
该方法的确覆盖或实现了在超类型中声明的方法。
该方法的签名与Object中声明的所有公共方法的签名等效。
您想要做的似乎是这样的:
@Override
protected A expectedA(B b) {
return createExpectedA(fee).apply(b);
}
关于java - 使用高阶函数覆盖Java中的抽象方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38896645/