如何将Lambda转换成简单的Java函数

如何将Lambda转换成简单的Java函数,java,lambda,abstract,Java,Lambda,Abstract,我试图理解一个java程序,它使用lambda将对象返回到接口的引用变量中。我想将lambda转换成简单的java函数,但不确定如何实现 计划如下:- public abstract class Performance implements Serializable { Iterface_name vehicle =(Iterface_name & Serializable) () ->{return new Object();}; Object speed() { r

我试图理解一个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();
}
界面如下:-

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();
}

如何将这个程序转换成简单的java程序而不使用lambda进行学习。请提供帮助。

您可以使用自己的
Iterface\u 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\u name

Iterface_name vehicle1 = new Iterface_name() {
    @Override
    public Object speed() {
        return new Object();
    }
};
另一方面,您甚至可以从

Iterface_name vehicle =(Iterface_name & Serializable) () ->{return new Object();};

甚至更短的版本也可以

Iterface_name vehicle = Object::new;

在这种情况下,您希望了解编译器是如何在内部实现lambda的,您可以通过

完全删除该字段。这是一样的:

public abstract class Performance implements {
    Object speed() {
        return new Object();
    }
}

非常感谢Madhusudana。这真的很有帮助。我想问一下,对(Iterface\u name&Serializable)进行类型转换是否有任何区别,以及(&)在这里做什么。@ela如果同时使用
vehicle=(Iterface\u name&Serializable).
,它允许我们将
vehicle
类型转换为上述任一类型。您可以使用
vehicle
上的
instanceof
操作符对其进行测试,并且这两种类型都将返回true。无论如何,如果您不使用
(Iterface\u name&Serializable)
它不能被类型转换为Serializable,只能被类型转换为
Iterface\u name
。再次感谢。你的解释消除了我的疑虑。我试图在网上搜索正确的解释,但没有找到。谢谢。