单个方法(功能)接口可以使用默认方法吗?

时间:2017-03-25 13:25:04

标签: lambda java-8

我最近发现了以下界面:

   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定义默认功能?

1 个答案:

答案 0 :(得分:0)

您可以定义SAM接口的默认方法,但除了Object类中的方法之外,您必须定义一个且只能定义一个抽象方法:functional interfaces

所以你用一个抽象方法(没有默认值,在Object类签名中找不到)定义SAM,然后根据需要定义多个默认方法(带有不同的签名)。