+ public static class Builder extends Option.Builder
+ {
+ // setting them the opposite way disables limits until both are set.
+ protected double min = Double.POSITIVE_INFINITY;
+
+ protected double max = Double.NEGATIVE_INFINITY;
+
+ /**
+ * Setting string on double parameter is not allowed, use
+ * {@link #setValue(Double)} instead.
+ */
+ @Override
+ public void setValue(String value)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void setValue(Double value)
+ {
+ if (value != null)
+ super.setValue(value.toString());
+ else
+ super.setValue(null);
+ }
+
+ /**
+ * Setting string on double parameter is not allowed, use
+ * {@link #setDefaultValue(Double)} instead.
+ */
+ @Override
+ public void setDefaultValue(String defaultValue)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void setDefaultValue(Double defaultValue)
+ {
+ if (defaultValue != null)
+ super.setDefaultValue(defaultValue.toString());
+ else
+ super.setDefaultValue(null);
+ }
+
+ public void setMin(Double min)
+ {
+ this.min = requireNonNullElse(min, Double.POSITIVE_INFINITY);
+ }
+
+ public void setMax(Double max)
+ {
+ this.max = requireNonNullElse(max, Double.NEGATIVE_INFINITY);
+ }
+
+ public void setBounds(Double min, Double max)
+ {
+ setMin(min);
+ setMax(max);
+ }
+
+ public DoubleParameter build()
+ {
+ return new DoubleParameter(this);
+ }
+ }
+
+ public static Builder newBuilder()
+ {
+ return new Builder();
+ }
+