Package picocli

Class CommandLine.Range

  • All Implemented Interfaces:
    java.lang.Comparable<CommandLine.Range>
    Enclosing class:
    CommandLine

    public static class CommandLine.Range
    extends java.lang.Object
    implements java.lang.Comparable<CommandLine.Range>
    Describes the number of parameters required and accepted by an option or a positional parameter.
    Since:
    0.9.7
    • Constructor Summary

      Constructors 
      Constructor Description
      Range​(int min, int max, boolean variable, boolean unspecified, java.lang.String originalValue)
      Constructs a new Range object with the specified parameters.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      int compareTo​(CommandLine.Range other)  
      boolean contains​(int value)
      Returns true if this Range includes the specified value, false otherwise.
      static CommandLine.Range defaultArity​(java.lang.Class<?> type)
      Deprecated.
      static CommandLine.Range defaultArity​(java.lang.reflect.Field field)
      Returns the default arity Range: for interactive options/positional parameters, this is 0; for options this is effectively "0..1" for booleans and 1 for other types, for parameters booleans have arity 1, arrays or Collections have arity "0..*", and other types have arity 1.
      boolean equals​(java.lang.Object object)  
      int hashCode()  
      boolean isRelative()
      Returns true if this Range contains a relative index like "1+", or false if this Range does not contain any relative indices.
      boolean isUnresolved()
      Returns true if this range contains a relative index like "1+", or variables that have not been expanded yet, false if this Range does not contain any variables or relative indices.
      boolean isUnspecified()
      Returns true if this Range is a default value, false if the user specified this value.
      boolean isVariable()
      Returns true if this range has no fixed upper bound.
      int max()
      Returns the upper bound of this range (inclusive), or Integer.MAX_VALUE if this range has no upper bound.
      CommandLine.Range max​(int newMax)
      Returns a new Range object with the max value replaced by the specified value.
      int min()
      Returns the lower bound of this range (inclusive).
      CommandLine.Range min​(int newMin)
      Returns a new Range object with the min value replaced by the specified value.
      static CommandLine.Range optionArity​(java.lang.reflect.Field field)
      Returns a new Range based on the CommandLine.Option.arity() annotation on the specified field, or the field type's default arity if no arity was specified.
      java.lang.String originalValue()
      Returns the original String value that this range was constructed with.
      static CommandLine.Range parameterArity​(java.lang.reflect.Field field)
      Returns a new Range based on the CommandLine.Parameters.arity() annotation on the specified field, or the field type's default arity if no arity was specified.
      static CommandLine.Range parameterIndex​(java.lang.reflect.Field field)
      Returns a new Range based on the CommandLine.Parameters.index() annotation on the specified field.
      java.lang.String toString()  
      CommandLine.Range unspecified​(boolean unspecified)
      Returns a new Range object with the isUnspecified value replaced by the specified value.
      static CommandLine.Range valueOf​(java.lang.String range)
      Leniently parses the specified String as a Range value and return the result.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • min

        @Deprecated
        public final int min
        Deprecated.
        use min() instead
      • max

        @Deprecated
        public final int max
        Deprecated.
        use max() instead
      • isVariable

        @Deprecated
        public final boolean isVariable
        Deprecated.
        use isVariable() instead
    • Constructor Detail

      • Range

        public Range​(int min,
                     int max,
                     boolean variable,
                     boolean unspecified,
                     java.lang.String originalValue)
        Constructs a new Range object with the specified parameters.
        Parameters:
        min - minimum number of required parameters
        max - maximum number of allowed parameters (or Integer.MAX_VALUE if variable)
        variable - true if any number or parameters is allowed, false otherwise
        unspecified - true if no arity was specified on the option/parameter (value is based on type)
        originalValue - the original value that was specified on the option or parameter
    • Method Detail

      • optionArity

        public static CommandLine.Range optionArity​(java.lang.reflect.Field field)
        Returns a new Range based on the CommandLine.Option.arity() annotation on the specified field, or the field type's default arity if no arity was specified.
        Parameters:
        field - the field whose Option annotation to inspect
        Returns:
        a new Range based on the Option arity annotation on the specified field
      • parameterArity

        public static CommandLine.Range parameterArity​(java.lang.reflect.Field field)
        Returns a new Range based on the CommandLine.Parameters.arity() annotation on the specified field, or the field type's default arity if no arity was specified.
        Parameters:
        field - the field whose Parameters annotation to inspect
        Returns:
        a new Range based on the Parameters arity annotation on the specified field
      • parameterIndex

        public static CommandLine.Range parameterIndex​(java.lang.reflect.Field field)
        Returns a new Range based on the CommandLine.Parameters.index() annotation on the specified field.
        Parameters:
        field - the field whose Parameters annotation to inspect
        Returns:
        a new Range based on the Parameters index annotation on the specified field
      • defaultArity

        public static CommandLine.Range defaultArity​(java.lang.reflect.Field field)
        Returns the default arity Range: for interactive options/positional parameters, this is 0; for options this is effectively "0..1" for booleans and 1 for other types, for parameters booleans have arity 1, arrays or Collections have arity "0..*", and other types have arity 1.

        Implementation Notes

        The returned Range for boolean options has an effective arity of "0..1". This is implemented by returning a Range with arity "0", and its unspecified property set to true. This implementation may change in the future.

        Parameters:
        field - the field whose default arity to return
        Returns:
        a new Range indicating the default arity of the specified field
        Since:
        2.0
      • defaultArity

        @Deprecated
        public static CommandLine.Range defaultArity​(java.lang.Class<?> type)
        Deprecated.
        Returns the default arity Range for options: booleans have arity 0, other types have arity 1.
        Parameters:
        type - the type whose default arity to return
        Returns:
        a new Range indicating the default arity of the specified type
      • valueOf

        public static CommandLine.Range valueOf​(java.lang.String range)
        Leniently parses the specified String as a Range value and return the result. A range string can be a fixed integer value or a range of the form MIN_VALUE + ".." + MAX_VALUE. If the MIN_VALUE string is not numeric, the minimum is zero. If the MAX_VALUE is not numeric, the range is taken to be variable and the maximum is Integer.MAX_VALUE.
        Parameters:
        range - the value range string to parse
        Returns:
        a new Range value
      • min

        public CommandLine.Range min​(int newMin)
        Returns a new Range object with the min value replaced by the specified value. The max of the returned Range is guaranteed not to be less than the new min value.
        Parameters:
        newMin - the min value of the returned Range object
        Returns:
        a new Range object with the specified min value
      • max

        public CommandLine.Range max​(int newMax)
        Returns a new Range object with the max value replaced by the specified value. The min of the returned Range is guaranteed not to be greater than the new max value.
        Parameters:
        newMax - the max value of the returned Range object
        Returns:
        a new Range object with the specified max value
      • unspecified

        public CommandLine.Range unspecified​(boolean unspecified)
        Returns a new Range object with the isUnspecified value replaced by the specified value.
        Parameters:
        unspecified - the unspecified value of the returned Range object
        Returns:
        a new Range object with the specified unspecified value
      • isUnspecified

        public boolean isUnspecified()
        Returns true if this Range is a default value, false if the user specified this value.
        Since:
        4.0
      • isUnresolved

        public boolean isUnresolved()
        Returns true if this range contains a relative index like "1+", or variables that have not been expanded yet, false if this Range does not contain any variables or relative indices.
        Since:
        4.0
      • isRelative

        public boolean isRelative()
        Returns true if this Range contains a relative index like "1+", or false if this Range does not contain any relative indices.
        Since:
        4.3
      • originalValue

        public java.lang.String originalValue()
        Returns the original String value that this range was constructed with.
        Since:
        4.3
      • min

        public int min()
        Returns the lower bound of this range (inclusive).
        Since:
        4.0
      • max

        public int max()
        Returns the upper bound of this range (inclusive), or Integer.MAX_VALUE if this range has no upper bound.
        Since:
        4.0
      • isVariable

        public boolean isVariable()
        Returns true if this range has no fixed upper bound.
        Since:
        4.0
      • contains

        public boolean contains​(int value)
        Returns true if this Range includes the specified value, false otherwise.
        Parameters:
        value - the value to check
        Returns:
        true if the specified value is not less than the minimum and not greater than the maximum of this Range
      • equals

        public boolean equals​(java.lang.Object object)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object