简体   繁体   English

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

[英]How to convert Lambda into simple Java function

I am trying to understand a program in java which has used lambda to return object into the reference variable of an interface. 我试图理解java中的一个程序,它使用lambda将对象返回到接口的引用变量中。 I want to convert lambda into simple java function, but not sure how to do it. 我想将lambda转换为简单的java函数,但不知道该怎么做。

The program is as follows:- 该计划如下: -

public abstract class Performance implements Serializable
{ 
Iterface_name vehicle =(Iterface_name & Serializable) () ->{return new Object();};
Object speed() 
{
    return vehicle.speed();
}
}

The interface is as follows:- 界面如下: -

public interface Iterface_name 
{
Object speed();
}

How to convert this program into simple java program without use of lambda for learning. 如何在不使用lambda进行学习的情况下将此程序转换为简单的java程序。 Please help. 请帮忙。

You could replace lambda expression with your own implementation of Iterface_name interface. 您可以使用自己的Iterface_name接口实现替换lambda表达式。

class Interface_name_impl implements Iterface_name {
    @Override
    public Object speed() {
        return new Object();
    }
}

Subsequently, you can replace your statement that uses lambda expression with 随后,您可以替换使用lambda表达式的语句

Iterface_name vehicle = new Interface_name_impl();

You can even use anonymous classes with out explicitly have the above class that implements Iterface_name 您甚至可以使用匿名类,但显式地具有实现Iterface_name的上述类

Iterface_name vehicle1 = new Iterface_name() {
    @Override
    public Object speed() {
        return new Object();
    }
};

On a different note, you could even simply your lambda usage from 换句话说,您甚至可以简单地使用lambda

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

to

Iterface_name vehicle = () -> new Object();

or even shorter version is 甚至更短的版本

Iterface_name vehicle = Object::new;

In case, you want to understand how lambdas are implemented internally by the compiler you can go through Java-8-Lambdas-A-Peek-Under-the-Hood 如果您想了解编译器如何在内部实现lambdas,您可以通过Java-8-Lambdas-A-Peek-Under-the-Hood

Delete the field entirely. 完全删除该字段。 This is the same: 这是一样的:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM