/** * Retrieve the explicit value if present, followed in precedence by whatever value, if not-null * supplied by the <code>preferred</code> parameter, followed by the default if all previous * options were null. * * @param preferred The intermediate value supplier. * @return The explicitly set, preferred or default value in that order, or possibly null. */ public T get(Supplier<? extends T> preferred) { return explicitOrElseGet(() -> { T value = preferred.get(); if (value != null) { return value; } return defaultValue.get(false); }); }
/** * Retrieve the explicit value if present, followed in precedence by whatever value, if not-null * supplied by the <code>preferred</code> parameter, followed by the default if all previous * options were null. * * @param preferred The intermediate value supplier. * @return The explicitly set, preferred or default value in that order, or possibly null. */ public T get(Supplier<? extends T> preferred) { return explicitOrElseGet(() -> { T value = preferred.get(); if (value != null) { return value; } return defaultValue.get(false); }); }
private synchronized T defaultValue(boolean throwIfNull) { return this.defaultValue.get(throwIfNull); }
private synchronized T get(boolean throwIfNull) { return explicitOrElseGet(() -> this.defaultValue.get(throwIfNull)); }
private synchronized T defaultValue(boolean throwIfNull) { return this.defaultValue.get(throwIfNull); }
private synchronized T get(boolean throwIfNull) { return explicitOrElseGet(() -> this.defaultValue.get(throwIfNull)); }
private Defaultable(Class<T> type, Supplier<T> defaultValueSupplier) { this.type = type; this.defaultValue = new DefaultValue<T>(defaultValueSupplier); }
private Defaultable(Class<T> type, Supplier<T> defaultValueSupplier) { this.type = type; this.defaultValue = new DefaultValue<T>(defaultValueSupplier); }