OnJava8-Examples/onjava/BasicSupplier.java

25 lines
696 B
Java
Raw Normal View History

// onjava/BasicSupplier.java
2015-11-03 12:00:44 -08:00
// Automatically create a Supplier, given a class
2015-06-15 17:47:35 -07:00
// with a default (no-arg) constructor.
package onjava;
2015-11-03 12:00:44 -08:00
import java.util.function.*;
2015-06-15 17:47:35 -07:00
2015-11-03 12:00:44 -08:00
public class BasicSupplier<T> implements Supplier<T> {
2015-06-15 17:47:35 -07:00
private Class<T> type;
2015-11-03 12:00:44 -08:00
public BasicSupplier(Class<T> type){ this.type = type; }
2015-06-15 17:47:35 -07:00
@Override
2015-11-03 12:00:44 -08:00
public T get() {
2015-06-15 17:47:35 -07:00
try {
// Assumes type is a public class:
return type.newInstance();
} catch(InstantiationException |
IllegalAccessException e) {
throw new RuntimeException(e);
}
}
// Produce a Default generator given a type token:
2015-11-03 12:00:44 -08:00
public static <T> Supplier<T> create(Class<T> type) {
return new BasicSupplier<>(type);
2015-06-15 17:47:35 -07:00
}
2015-09-07 11:44:36 -06:00
}