Supplier Functional Interface in Java

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.

Leave a Reply

Your email address will not be published. Required fields are marked *