繁体   English   中英

lambda表达式是否作为接口抽象方法的实现?

[英]Does lambda expression work as an implementation of abstract method of interface?

下面的lambda表达式:

    new Thread(() -> 
        doSomething()
    ).start();
  1. lambda表达式() -> doSomething()实现了public abstract void run();
  2. (param1, param2) -> {}用于接口只有一个带两个参数的方法的情况吗?
  3. 如何处理使用lambda表达式的两个抽象方法的接口?

感谢任何可以帮助我的人。

  1. 您的lambda表达式的行为类似于实现Runnable的抽象类实例,但它不一定实现为抽象类实例。

  2. 是。

  3. 在需要具有多个抽象方法的接口的情况下,不能使用lambda表达式。 lambda表达式只能在需要功能接口的地方使用,这意味着单个抽象方法。

  1. lambda表达式() -> doSomething()实现了public abstract void run();

是的,lambda是desugared到一个匿名类型,它使用lambda语法提供的代码实现Runnable

  1. (param1, param2) -> {}用于接口只有一个带两个参数的方法的情况吗?

是的, lambda形状与接口方法的形状相匹配很重要。

  1. 如何处理使用lambda表达式的两个抽象方法的接口?

你不能在这里直接使用lambdas,但一个典型的解决方法是定义一个实现接口的具体类,它的构造函数接受两个相应形状的lambdas。 类中的实现方法委托给这些lambda对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM