java - java中使用高阶函数重写抽象方法

标签 java java-8 higher-order-functions

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

  protected abstract A expectedA(B b);

  protected Function<A, B> createExpectedA(Long foo) {
    return a -> { ... return b}}

然后我想用 createExpectedA 的返回函数覆盖抽象函数,如下所示:

  @Override
  protected Function<A, B> expectedA = createExpectedA(fee);

但是这给了我以下错误:

The annotation @Override is disallowed for this location

如何在 Java8 中做我想做的事情?

最佳答案

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

Indicates that a method declaration is intended to override a method declaration in a supertype. If a method is annotated with this annotation type compilers are required to generate an error message unless at least one of the following conditions hold:

  • The method does override or implement a method declared in a supertype.
  • The method has a signature that is override-equivalent to that of any public method declared in Object.

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

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

关于java - java中使用高阶函数重写抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38896645/

相关文章:

Haskell 高阶函数

java - Android:是否可以在另一个手指已经触摸屏幕时处理点击?

java - OpenSAML 自定义属性值

java - 处理一个事件 : implement an interface or using inner class to handle the interface. 哪个更好

java - 使用 Scanner 在 Java 控制台应用程序中接受用户的格式化 Json(多行)输入(未读取所有行)

java - lambda 表达式的类型推断限制

swift - 通过在 Swift 中使用高阶函数,这是否会影响 Big O 的时间或空间复杂度以提高效率?

scala - 为什么Spark RDD不支持 "flatten"

java - 所有 web 应用程序的 tomcat 过滤器

java - Joda时间和Java8时差