我试图理解java中的一个程序,它使用lambda将对象返回到接口的引用变量中。我想将lambda转换为简单的java函数,但不知道该怎么做。
该计划如下: -
public abstract class Performance implements Serializable
{
Iterface_name vehicle =(Iterface_name & Serializable) () ->{return new Object();};
Object speed()
{
return vehicle.speed();
}
}
界面如下: -
public interface Iterface_name
{
Object speed();
}
如何在不使用lambda进行学习的情况下将此程序转换为简单的java程序。请帮忙。
答案 0 :(得分:3)
您可以使用自己的Iterface_name
接口实现替换lambda表达式。
class Interface_name_impl implements Iterface_name {
@Override
public Object speed() {
return new Object();
}
}
随后,您可以将使用lambda表达式的语句替换为
Iterface_name vehicle = new Interface_name_impl();
你甚至可以使用匿名类而不明确地拥有实现Iterface_name
Iterface_name vehicle1 = new Iterface_name() {
@Override
public Object speed() {
return new Object();
}
};
另一方面,您甚至可以从
中简单地使用lambdaIterface_name vehicle =(Iterface_name & Serializable) () ->{return new Object();};
到
Iterface_name vehicle = () -> new Object();
甚至更短的版本
Iterface_name vehicle = Object::new;
如果你想了解编译器如何在内部实现lambda,你可以通过Java-8-Lambdas-A-Peek-Under-the-Hood
答案 1 :(得分:0)
完全删除该字段。这是一样的:
public abstract class Performance implements {
Object speed() {
return new Object();
}
}