在抽象类中,我有以下定义:
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中完成我想要的工作?
答案 0 :(得分:3)
注释Override
旨在用于不在字段上的方法,这就是您收到此错误的原因。提醒一下,这是Javadoc:
表示方法声明旨在覆盖方法 超类型声明。如果方法用此注释 注释类型编译器需要生成错误消息 除非至少满足下列条件之一:
- 该方法会覆盖或实现以超类型声明的方法。
- 该方法的签名覆盖等效于Object中声明的任何公共方法。
你想做的事情似乎是这样的:
@Override
protected A expectedA(B b) {
return createExpectedA(fee).apply(b);
}