Java 如何用接口方法的方法引用替换lambda?
如何用接口方法中的方法引用替换lambdaJava 如何用接口方法的方法引用替换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;
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是正确的,接口是功能性的。但是,缺少第二个方法的默认值