如何用接口方法的方法引用替换lambda? [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用接口方法的方法引用替换lambda? [关闭]相关的知识,希望对你有一定的参考价值。

如何用接口方法中的方法引用替换lambda?

public abstract interface Job
{
  public abstract String empName();

  public void JobWithDesc(String title)
  {
    setJobValueDesc(title, empName());
  }
}



public final class JobClient {

  private static final Job job;


  static {
    job = () -> ListJob.getName;
  }

  public static final Job getJob() {
    return job;
    }
}

想用引用替换this(job =() - > ListJob.getName;)lambda。请帮帮我

答案
job = "EmpApplication"::toString;

但问题是,您希望将其转换为方法参考。

这是一个简单的lambda返回String文字。没有方法被调用。

我们可以将"EmpApplication"包装成静态方法并引用它或使用返回自身的实例方法。

另一答案

您需要定义一个方法:

public static String getEmpApp() {
    return "EmpApplication";
}

并使用它:

static {
    job = JobClient::getEmpApp;
}

不过,我认为这样做没有意义。

也就是说,你的Job界面有编译错误。 JobWithDesc方法应该是staticdefault,它调用一个方法 - setJobValueDesc - 没有在任何地方定义。

以上是关于如何用接口方法的方法引用替换lambda? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

方法引用的使用 jdk8

lambda表达式&方法引用

lambda表达式与函数式接口

如何用 setKeepAliveTimeout 方法替换 UIRemoteNotificationTypeVoip 方法?

Java8新特性:Lambda表达式函数式接口以及方法引用

Java 8 Lambda 表达式和 Stream 操作