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

Java 如何用接口方法的方法引用替换lambda?,java,java-8,Java,Java 8,如何用接口方法中的方法引用替换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;

如何用接口方法中的方法引用替换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;
    }
}
要替换此作业=->ListJob.getName;lambda和一个引用。请帮我做这个

job = "EmpApplication"::toString;
但问题是,为什么要将其转换为方法引用

这是一个返回字符串文本的简单lambda。没有调用任何方法


我们可以将EMP应用程序包装成一个静态方法并引用它,或者使用一个返回自身的实例方法。

您需要定义一个方法:

public static String getEmpApp() {
    return "EmpApplication";
}
并使用它:

static {
    job = JobClient::getEmpApp;
}
不过,我认为这样做毫无意义


也就是说,您的作业界面存在编译错误。JobWithDesc方法应该是静态的或默认的,并且它调用一个方法-setJobValueDesc-未在任何地方定义。

您的代码不会编译,并且不创建另一个方法就不能将->EmpApplication转换为方法引用。您可以创建一个私有静态字符串getApplication{return empplication;}方法,然后执行job=JobClient::getApplication;你的抽象界面没有意义。接口本质上是抽象的,只有使用默认关键字才能提供方法实现。什么是ListJob为什么不做,ListJob::getName?@Aomine实际上,您可以通过引用intern或toString@AomineString::toString返回相同的字符串。因此,您不需要真正创建自己的。@空指针。我假定lambda是正确的,接口是功能性的。但是,缺少第二个方法的默认值