--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.options/src/org/graalvm/options/OptionType.java 2017-09-12 22:24:51.471935563 -0700 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.options/src/org/graalvm/options/OptionType.java 2017-09-12 22:24:51.326929029 -0700 @@ -57,7 +57,6 @@ */ public OptionType(String name, T defaultValue, Function stringConverter, Consumer validator) { Objects.requireNonNull(name); - Objects.requireNonNull(defaultValue); Objects.requireNonNull(stringConverter); Objects.requireNonNull(validator); this.name = name; @@ -133,7 +132,7 @@ return "OptionType[name=" + name + ", defaultValue=" + defaultValue + "]"; } - private static Map, OptionType> DEFAULTTYPES = new HashMap<>(); + private static final Map, OptionType> DEFAULTTYPES = new HashMap<>(); static { DEFAULTTYPES.put(Boolean.class, new OptionType<>("Boolean", false, new Function() { public Boolean apply(String t) { @@ -200,13 +199,24 @@ /** * Returns the default option type for a given value. Returns null if no default - * option type is available for this Java type. + * option type is available for the Java type of this value. * * @since 1.0 */ @SuppressWarnings("unchecked") - public static OptionType defaultType(Object value) { - return (OptionType) DEFAULTTYPES.get(value.getClass()); + public static OptionType defaultType(T value) { + return defaultType((Class) value.getClass()); + } + + /** + * Returns the default option type for a class. Returns null if no default option + * type is available for this Java type. + * + * @since 1.0 + */ + @SuppressWarnings("unchecked") + public static OptionType defaultType(Class clazz) { + return (OptionType) DEFAULTTYPES.get(clazz); } }