使用高阶函数覆盖java中的抽象方法

时间:2016-08-11 12:38:26

标签: java java-8 higher-order-functions

在抽象类中,我有以下定义:

  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中完成我想要的工作?

1 个答案:

答案 0 :(得分:3)

注释Override旨在用于不在字段上的方法,这就是您收到此错误的原因。提醒一下,这是Javadoc:

  

表示方法声明旨在覆盖方法   超类型声明。如果方法用此注释   注释类型编译器需要生成错误消息   除非至少满足下列条件之一:

     
      
  • 该方法会覆盖或实现以超类型声明的方法。
  •   
  • 该方法的签名覆盖等效于Object中声明的任何公共方法。
  •   

你想做的事情似乎是这样的:

@Override
protected A expectedA(B b) {
    return createExpectedA(fee).apply(b);
}