![](/img/trans.png)
[英]Generic abstract method & Functional interface & lambda expression
[英]Does lambda expression work as an implementation of abstract method of interface?
下面的lambda表达式:
new Thread(() ->
doSomething()
).start();
() -> doSomething()
实现了public abstract void run();
? (param1, param2) -> {}
用于接口只有一个带两个参数的方法的情况吗? 感谢任何可以帮助我的人。
您的lambda表达式的行为类似于实现Runnable的抽象类实例,但它不一定实现为抽象类实例。
是。
在需要具有多个抽象方法的接口的情况下,不能使用lambda表达式。 lambda表达式只能在需要功能接口的地方使用,这意味着单个抽象方法。
- lambda表达式
() -> doSomething()
实现了public abstract void run();
?
是的,lambda是desugared到一个匿名类型,它使用lambda语法提供的代码实现Runnable
。
- 将
(param1, param2) -> {}
用于接口只有一个带两个参数的方法的情况吗?
是的, lambda形状与接口方法的形状相匹配很重要。
- 如何处理使用lambda表达式的两个抽象方法的接口?
你不能在这里直接使用lambdas,但一个典型的解决方法是定义一个实现接口的具体类,它的构造函数接受两个相应形状的lambdas。 类中的实现方法委托给这些lambda对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.