ela
ela

Reputation: 67

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. I want to convert lambda into simple java function, but not sure how to do it.

The program is as follows:

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

The interface is as follows:-

public interface InterfaceName 
{
    Object speed();
}

How could I convert this program into a simple Java program without use of a lambda, as a learning exercise?

Upvotes: 4

Views: 11305

Answers (2)

Bohemian
Bohemian

Reputation: 425003

Delete the field entirely. This is the same:

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

Upvotes: 0

You could replace lambda expression with your own implementation of the InterfaceName interface.

class InterfaceNameImpl implements InterfaceName {
    @Override
    public Object speed() {
        return new Object();
    }
}

Subsequently, you can replace your statement that uses lambda expression with

InterfaceName vehicle = new InterfaceNameImpl();

You can even use anonymous classes without explicitly having the above class that implements InterfaceName

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

On a different note, you could even simplify your lambda usage from

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

to

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

or an even shorter version is

InterfaceName 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

Upvotes: 4

Related Questions