下面的lambda表达式:
new Thread(() ->
doSomething()
).start();
() -> doSomething()
是否实现了public abstract void run();
?(param1, param2) -> {}
会在接口只有一个带两个参数的方法的情况下工作吗?感谢所有能帮助我的人。
答案 0 :(得分:4)
您的lambda表达式的行为类似于实现Runnable的抽象类实例,但它不一定是作为抽象类实例实现的。
是
在需要具有多个抽象方法的接口的情况下,不能使用lambda表达式。 lambda表达式只能在需要功能接口的地方使用,这意味着单个抽象方法。
答案 1 :(得分:4)
- lambda表达式
醇>() -> doSomething()
是否实现了public abstract void run();
?
是的,lambda被描述为一个匿名类型,它使用lambda语法提供的代码实现Runnable
。
- 醇>
(param1, param2) -> {}
会在接口只有一个带两个参数的方法的情况下工作吗?
是的,重要的是 lambda shape 与接口方法的形状相匹配。
- 如何处理使用lambda表达式的两个抽象方法的接口?
醇>
你不能在这里直接使用lambdas,但一个典型的解决方法是定义一个实现接口的具体类,并且它的构造函数接受两个相应形状的lambdas。类中的实现方法委托给这些lambda对象。