我最近发现了以下界面:
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定义默认功能?
答案 0 :(得分:0)
您可以定义SAM接口的默认方法,但除了Object类中的方法之外,您必须定义一个且只能定义一个抽象方法:functional interfaces
所以你用一个抽象方法(没有默认值,在Object类签名中找不到)定义SAM,然后根据需要定义多个默认方法(带有不同的签名)。