【问题标题】:No target method found in functional interface在功能接口中找不到目标方法
【发布时间】:2017-10-24 00:59:03
【问题描述】:

我正在尝试了解有关 Java 8 FunctionalInterface 注释的更多信息。我写了以下代码作为实验,但它没有编译:

@FunctionalInterface
public interface HasToString {

    String toString();
}

没有找到目标方法

有趣的是,这个确实编译:

@FunctionalInterface
public interface HasToString {

    String notToString();
}

这是为什么?

【问题讨论】:

  • 您正在覆盖 Object 的 toString() 方法。所以它不是一个抽象的方法,而是一个具体的方法。

标签: java functional-interface


【解决方案1】:

这在JLS 9.8中有说明

函数式接口是只有一个抽象方法(除了Object的方法)的接口,因此代表了一个单一的函数契约。这种“单一”方法可以采用多个抽象方法的形式,这些方法具有从超接口继承的重写等效签名;在这种情况下,继承的方法在逻辑上代表一个方法。

由于toString 是“Object 类的公共实例方法”,因此您的接口不符合功能接口的条件。

【讨论】:

  • 没错,除了Object的实例方法之外的一切
猜你喜欢
  • 2020-08-10
  • 2019-07-25
  • 2017-01-10
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多