我不能为下面代码中显示的具有多个方法的接口定义lambda表达式。
interface Interface{
public void st1();
public String ra(String p);
}
我可以为单方法接口定义lambda表达式。
interface Interface{
public String ra(String p);
}
public static void main(String[] args) {
Interface r = (x)->{
return x;
};
String getValue = r.ra("string");
System.out.println(getValue);
}
但是如何为多个方法定义一个lambda表达式呢?
2条答案
按热度按时间wmomyfyw1#
你考虑的是函数接口。用lambda表达式匿名定义一个类是一种语法糖,它只适用于只有一个方法的接口。如果你有不止一个方法,你必须求助于一个老式的匿名类:
h43kikqp2#
如果你更喜欢它的外观,你可以这样写:
也许在某些情况下这一点更清楚。
如果您有两个具有相同签名的方法,我 * 不 * 推荐这样做--除非您使用builder模式,但这样一个简单的匿名类可能会更清楚。