【问题标题】:Can a single method (functional) interface have a default method? [duplicate]单个方法(功能)接口可以有默认方法吗? [复制]
【发布时间】:2017-03-25 21:47:03
【问题描述】:

最近发现如下界面:

   public static interface LoggImpl{
        public default void Log(String s){

        }
    }

不能作为 lambda 引用:

// compile error: "no target method found"
static LoggImpl impl = (String s)-> {
    System.out.println(s);
};

这是否意味着我们不能为单个函数 lambda 定义默认功能?

【问题讨论】:

    标签: lambda java-8


    【解决方案1】:

    您可以为 SAM 接口定义默认方法,但您必须定义一个且仅一个抽象方法,而不是 Object 类中的方法:functional interfaces

    因此,您使用一种抽象方法(无默认方法,在 Object 类签名中找不到)定义 SAM,然后根据需要定义任意数量的默认方法(具有不同的签名)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-21
      • 2014-05-19
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多