如何将Lambda转换成简单的Java函数
我试图理解一个java程序,它使用lambda将对象返回到接口的引用变量中。我想将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
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
。再次感谢。你的解释消除了我的疑虑。我试图在网上搜索正确的解释,但没有找到。谢谢。