Supplier is a functional interface introduced in Java 8 and available in java.util.function package.
This interface has functional method get(). Supplier does not take a argument and returns a result every time it is called.
@FunctionalInterface
public interface Supplier<T> {
T get();
}
Here, T represents the type of the result.
The supplier can be used in cases where there is no input but an output is expected. Since Supplier is a functional interface, hence it can be used as the assignment target for a lambda expression or a method reference.
Supplier example
In the following example, we have created supplier which returns a java.util.Date object every time it is called.
import java.util.Date;
import java.util.function.Supplier;
public class SupplierExample {
public static void main(String[] args) {
Supplier<Date> s = () -> new Date();
System.out.println(s.get());
}
}
Output
Fri Oct 09 17:11:19 IST 2020
Supplier example to get object
In the following example, we have created a class Employee with two properties: id and name. Supplier return the new object of the Employee whenever it is called.
import java.util.function.Supplier;
class Employee {
private int id;
private String name;
public Employee(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Employee [id=" + id + ", name=" + name + "]";
}
}
public class SupplierExample {
public static void main(String[] args) {
Supplier<Employee> supplier = () -> new Employee(1, "John");
Employee emp = supplier.get();
System.out.println(emp);
}
}
Output
Employee [id=1, name=John]
