如何用接口方法的方法参考替换lambda?

时间:2019-01-03 11:56:56

标签: 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;


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

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

希望用引用替换此(job =()-> ListJob.getName;)lambda。请帮助我

2 个答案:

答案 0 :(得分:1)

job = "EmpApplication"::toString;

但是,问题是,为什么要将它转换为方法引用。

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

我们可以将"EmpApplication"包装到静态方法中并对其进行引用,也可以使用返回自身的实例方法。

答案 1 :(得分:0)

您需要定义一个方法:

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

并使用它:

static {
    job = JobClient::getEmpApp;
}

不过,我认为这样做毫无意义。

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