Class DualBound<T extends Number>

  • Type Parameters:
    T - value type
    All Implemented Interfaces:
    Constraint<T>

    public final class DualBound<T extends Number>
    extends SingleBound<T>
    Continuous constraints with a dual bound. To allow both Double and AbstractDoubleScalar<?, ?> constraints, the generic type is restricted to Number. However, that also allows other subclasses of Number, e.g. Integer. Due to rounding and value limits from the type (e.g. Integer.MAX_VALEU), bounds may not function correctly after a call to Number.doubleValue(). To restrict the usage, the constructor is private and static factory methods for Double and AbstractDoubleScalar<?, ?> are supplied.

    Copyright (c) 2013-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
    BSD-style license. See OpenTrafficSim License.

    Version:
    $Revision$, $LastChangedDate$, by $Author$, initial version 8 sep. 2017
    Author:
    Alexander Verbraeck, Peter Knoppers, Wouter Schakel
    • Field Detail

      • UNITINTERVAL

        public static final DualBound<Number> UNITINTERVAL
        Standard dual bound on the unit interval [0...1]. This can be used for both Double and AbstractDoubleScalar<?, ?> parameters.
    • Method Detail

      • closed

        public static DualBound<Double> closed​(double lowerBound,
                                               double upperBound)
        Creates a dual bound including the bounds; lowerBound <= value <= upperBound. Bounds may be equal.
        Parameters:
        lowerBound - double; lower bound value
        upperBound - double; upper bound value
        Returns:
        closed dual bound
      • closed

        public static <T extends AbstractDoubleScalar<?,​?>> DualBound<T> closed​(T lowerBound,
                                                                                      T upperBound)
        Creates a dual bound including the bounds; lowerBound <= value <= upperBound.
        Type Parameters:
        T - value type
        Parameters:
        lowerBound - T; lower bound value
        upperBound - T; upper bound value
        Returns:
        closed dual bound
      • open

        public static DualBound<Double> open​(double lowerBound,
                                             double upperBound)
        Creates a dual bound excluding the bounds; lowerBound < value < upperBound.
        Parameters:
        lowerBound - double; lower bound value
        upperBound - double; upper bound value
        Returns:
        open dual bound
      • open

        public static <T extends AbstractDoubleScalar<?,​?>> DualBound<T> open​(T lowerBound,
                                                                                    T upperBound)
        Creates a dual bound excluding the bounds; lowerBound < value < upperBound.
        Type Parameters:
        T - value type
        Parameters:
        lowerBound - T; lower bound value
        upperBound - T; upper bound value
        Returns:
        open dual bound
      • leftOpenRightClosed

        public static DualBound<Double> leftOpenRightClosed​(double lowerBound,
                                                            double upperBound)
        Creates a dual bound excluding the lower bound and including the upper bound; lowerBound < value <= upperBound.
        Parameters:
        lowerBound - double; lower bound value
        upperBound - double; upper bound value
        Returns:
        dual bound; excluding the lower bound and including the upper bound
      • leftOpenRightClosed

        public static <T extends AbstractDoubleScalar<?,​?>> DualBound<T> leftOpenRightClosed​(T lowerBound,
                                                                                                   T upperBound)
        Creates a dual bound excluding the lower bound and including the upper bound; lowerBound < value <= upperBound.
        Type Parameters:
        T - value type
        Parameters:
        lowerBound - T; lower bound value
        upperBound - T; upper bound value
        Returns:
        dual bound; excluding the lower bound and including the upper bound
      • leftClosedRightOpen

        public static DualBound<Double> leftClosedRightOpen​(double lowerBound,
                                                            double upperBound)
        Creates a dual bound including the lower bound and excluding the upper bound; lowerBound <= value < upperBound.
        Parameters:
        lowerBound - double; lower bound value
        upperBound - double; upper bound value
        Returns:
        dual bound; including the lower bound and excluding the upper bound
      • leftClosedRightOpen

        public static <T extends AbstractDoubleScalar<?,​?>> DualBound<T> leftClosedRightOpen​(T lowerBound,
                                                                                                   T upperBound)
        Creates a dual bound including the lower bound and excluding the upper bound; lowerBound <= value < upperBound.
        Type Parameters:
        T - value type
        Parameters:
        lowerBound - T; lower bound value
        upperBound - T; upper bound value
        Returns:
        dual bound; including the lower bound and excluding the upper bound
      • accept

        public boolean accept​(T value)
        Checks whether the value complies with constraints.
        Specified by:
        accept in interface Constraint<T extends Number>
        Overrides:
        accept in class SingleBound<T extends Number>
        Parameters:
        value - T; Value to check.
        Returns:
        Whether the value complies with constraints.