OnJava8-Examples/onjava/BasicSupplier.java

28 lines
874 B
Java
Raw Normal View History

// onjava/BasicSupplier.java
2015-11-14 16:18:05 -08:00
// <20>2016 MindView LLC: see Copyright.txt
2015-11-15 15:51:35 -08:00
// We make no guarantees that this code is fit for any purpose.
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
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
}