The Supplier interface in Java is an in-built Functional interface introduced in version 8, and it is located in java.util.function package. It has only one method, a functional method T get() that takes no input but returns the output. Since it is a Functional Interface, we can implement it with a Lambda expression.
Supplier<T>
@FunctionalInterface
public interface Supplier<T> {
/**
* Gets a result.
*
* @return a result
*/
T get();
}
Implementing the Supplier interface in Java
Example 1:
class Test {
public static void main(String[] args) {
Supplier<String> supplier = () -> "Java";
System.out.println(supplier.get());
}
}
Output: Java
Here, inside the braces <>, we specified which type is the output, and we used a Lambda expression to write the implementation of the Supplier interface. Calling the get() method, we are retrieving the result of the Lambda body.
Example 2:
Let’s create a User class:
class User {
private String name;
private String username;
private String membershipType;
private String address;
public User(String name, String username, String membershipType, String address) {
this.name = name;
this.username = username;
this.membershipType = membershipType;
this.address = address;
}
@Override
public String toString() {
return "User{" + "name='" + name + '\'' + ", username='" + username + "} + \n";
}
}
Now let’s create one method that returns a list of users and call it from the Supplier:
class Test {
private static List<User> getAllUsers() {
List<User> users = new ArrayList<>();
users.add(new User("John", "john123", "premium", "5th Avenue"));
users.add(new User("Megan", "meganusr", "gold", "New Light Street"));
users.add(new User("Steve", "steve1234", "regular", "New Street Avenue"));
users.add(new User("Melissa", "mell1", "premium", "Ser Kingston Street"));
return users;
}
public static void main(String[] args) {
Supplier<List<User>> usersSupplier = () -> getAllUsers();
System.out.println("Getting the users: " + usersSupplier.get());
}
}
Output: Getting the users: [User{name=’John’, username=’john123} + , User{name=’Megan’, username=’meganusr} + , User{name=’Steve’, username=’steve1234} + , User{name=’Melissa’, username=’mell1} + ]
I hope this tutorial was helpful to you. To learn more, check out other Java Functional Programming tutorials.