Class CommandLine


  • public class CommandLine
    extends Object
    Base class for command line tools. Subclasses define fields annotated with Option, while will be initialized automatically by the constructor. The following options are automatically recognized by this class:

    -encoding  Set the input and output encoding.
    -help  Print the help summary.
    -locale  Set the locale for string, number and date formatting.
    Since:
    2.5
    Author:
    Martin Desruisseaux, Cédric Briançon
    • Field Detail

      • ILLEGAL_ARGUMENT_EXIT_CODE

        public static final int ILLEGAL_ARGUMENT_EXIT_CODE
        The code given to System.exit(int) when the program failed because of an illegal user argument.
        See Also:
        Constant Field Values
      • BAD_CONTENT_EXIT_CODE

        public static final int BAD_CONTENT_EXIT_CODE
        The code given to System.exit(int) when the program failed because of bad content in a file.
        See Also:
        Constant Field Values
      • out

        protected final PrintWriter out
        Output stream to the console. This output stream may use the encoding specified by the "-encoding" argument, if presents.
      • err

        protected final PrintWriter err
        Error stream to the console.
      • locale

        protected final Locale locale
        The locale inferred from the "-locale" option. If no such option was provided, then this field is set to the default locale.
      • arguments

        protected final String[] arguments
        The remaining arguments after all option values have been assigned to the fields.
    • Constructor Detail

      • CommandLine

        protected CommandLine​(String... args)
        Creates a new CommandLine instance from the given arguments. This constructor expects no additional argument after the one annoted as Option.
        Parameters:
        args - The command-line arguments.
      • CommandLine

        protected CommandLine​(String[] args,
                              int maximumRemaining)
        Creates a new CommandLine instance from the given arguments. If this constructor fails because of a programming error (for example a type not handled by parse method), then an exception is thrown like usual. If this constructor fails because of some user error (e.g. if a mandatory argument is not provided) or some other external conditions (e.g. an IOException), then it prints a short error message and invokes System.exit(int) with one the EXIT_CODE constants.
        Parameters:
        args - The command-line arguments.
        maximumRemaining - The maximum number of arguments that may remain after processing of annotated fields. This is the maximum length of the arguments array. The default value is 0.
    • Method Detail

      • parse

        protected <T> T parse​(Class<T> type,
                              String value)
                       throws UnsupportedOperationException
        Parses the given string as a value of the given type. This method is invoked automatically for values that are not of one of the pre-defined types. The default implementation thrown an exception in all cases.
        Type Parameters:
        T - The field type.
        Parameters:
        type - The field type.
        value - The value given on the command line.
        Returns:
        The value for the given string to parse.
        Throws:
        UnsupportedOperationException - if the value can't be parsed.
      • help

        protected void help()
        Prints a description of all arguments to the standard output. This method is invoked automatically if the user provided the --help argument on the command line. Subclasses can override this method in order to prints a summary before the option list.