# Class Option.Builder

java.lang.Object
org.apache.commons.cli.Option.Builder

All Implemented Interfaces:
  `Supplier<Option>`

Enclosing class:
  `Option`

public static final class Option.Builder extends Object implements Supplier<Option>
Builds `Option` instances using descriptive methods.

Example usage:

    Option option = Option.builder("a").required(true).longOpt("arg-name").build();

Since:
  1.3

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Option.Builder`
  `argName(String argName)`
  Sets the display name for the argument value.
  `Option`
  `build()`
  Deprecated.
  Use `get()`.
  `Option.Builder`
  `converter(Converter<?,?> converter)`
  Sets the converter for the option.
  `Option.Builder`
  `deprecated()`
  Marks this Option as deprecated.
  `Option.Builder`
  `deprecated(DeprecatedAttributes deprecated)`
  Sets whether the Option is deprecated.
  `Option.Builder`
  `desc(String description)`
  Sets the description for this option.
  `Option`
  `get()`
  Constructs an Option with the values declared by this `Option.Builder`.
  `Option.Builder`
  `hasArg()`
  Tests whether the Option will require an argument.
  `Option.Builder`
  `hasArg(boolean hasArg)`
  Tests whether the Option has an argument or not.
  `Option.Builder`
  `hasArgs()`
  Tests whether the Option can have unlimited argument values.
  `Option.Builder`
  `longOpt(String longOption)`
  Sets the long name of the Option.
  `Option.Builder`
  `numberOfArgs(int argCount)`
  Sets the number of argument values the Option can take.
  `Option.Builder`
  `option(String option)`
  Sets the name of the Option.
  `Option.Builder`
  `optionalArg(boolean optionalArg)`
  Sets whether the Option can have an optional argument.
  `Option.Builder`
  `required()`
  Marks this Option as required.
  `Option.Builder`
  `required(boolean required)`
  Sets whether the Option is required.
  `Option.Builder`
  `since(String since)`
  Sets the version number when this option was first defined."
  `Option.Builder`
  `type(Class<?> type)`
  Sets the type of the Option.
  `Option.Builder`
  `valueSeparator()`
  The Option will use '=' as a means to separate argument value.
  `Option.Builder`
  `valueSeparator(char valueSeparator)`
  The Option will use `sep` as a means to separate argument values.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Method Details

  - ### argName

    public Option.Builder argName(String argName)
    Sets the display name for the argument value.
    Parameters:
      `argName` - the display name for the argument value.
    Returns:
      `this` instance..

  - ### build

    @Deprecated public Option build()
    Deprecated.
    Use `get()`.
    Constructs an Option with the values declared by this `Option.Builder`.
    Returns:
      the new `Option`.
    Throws:
      `IllegalArgumentException` - if neither `opt` or `longOpt` has been set.

  - ### converter

    public Option.Builder converter(Converter<?,?> converter)
    Sets the converter for the option.

    Note: See `TypeHandler` for serialization discussion.

    Parameters:
      `converter` - the Converter to use.
    Returns:
      `this` instance..
    Since:
      1.7.0

  - ### deprecated

    public Option.Builder deprecated()
    Marks this Option as deprecated.
    Returns:
      this builder.
    Since:
      1.7.0

  - ### deprecated

    public Option.Builder deprecated(DeprecatedAttributes deprecated)
    Sets whether the Option is deprecated.
    Parameters:
      `deprecated` - specifies whether the Option is deprecated.
    Returns:
      this builder.
    Since:
      1.7.0

  - ### desc

    public Option.Builder desc(String description)
    Sets the description for this option.
    Parameters:
      `description` - the description of the option.
    Returns:
      `this` instance..

  - ### get

    public Option get()
    Constructs an Option with the values declared by this `Option.Builder`.
    Specified by:
      `get` in interface `Supplier<Option>`
    Returns:
      the new `Option`.
    Throws:
      `IllegalStateException` - if neither `opt` or `longOpt` has been set.

  - ### hasArg

    public Option.Builder hasArg()
    Tests whether the Option will require an argument.
    Returns:
      `this` instance..

  - ### hasArg

    public Option.Builder hasArg(boolean hasArg)
    Tests whether the Option has an argument or not.
    Parameters:
      `hasArg` - specifies whether the Option takes an argument or not.
    Returns:
      `this` instance..

  - ### hasArgs

    public Option.Builder hasArgs()
    Tests whether the Option can have unlimited argument values.
    Returns:
      this builder.

  - ### longOpt

    public Option.Builder longOpt(String longOption)
    Sets the long name of the Option.
    Parameters:
      `longOption` - the long name of the Option
    Returns:
      this builder.

  - ### numberOfArgs

    public Option.Builder numberOfArgs(int argCount)
    Sets the number of argument values the Option can take.
    Parameters:
      `argCount` - the number of argument values
    Returns:
      this builder.

  - ### option

    public Option.Builder option(String option) throws IllegalArgumentException
    Sets the name of the Option.
    Parameters:
      `option` - the name of the Option.
    Returns:
      this builder.
    Throws:
      `IllegalArgumentException` - if there are any non valid Option characters in `opt`.
    Since:
      1.5.0

  - ### optionalArg

    public Option.Builder optionalArg(boolean optionalArg)
    Sets whether the Option can have an optional argument.
    Parameters:
      `optionalArg` - specifies whether the Option can have an optional argument.
    Returns:
      this builder.

  - ### required

    public Option.Builder required()
    Marks this Option as required.
    Returns:
      this builder.

  - ### required

    public Option.Builder required(boolean required)
    Sets whether the Option is required.
    Parameters:
      `required` - specifies whether the Option is required.
    Returns:
      this builder.

  - ### since

    public Option.Builder since(String since)
    Sets the version number when this option was first defined."
    Parameters:
      `since` - the version number when this option was first defined.
    Returns:
      this builder.

  - ### type

    public Option.Builder type(Class<?> type)
    Sets the type of the Option.
    Parameters:
      `type` - the type of the Option.
    Returns:
      this builder.

  - ### valueSeparator

    public Option.Builder valueSeparator()
    The Option will use '=' as a means to separate argument value.
    Returns:
      this builder.

  - ### valueSeparator

    public Option.Builder valueSeparator(char valueSeparator)
    The Option will use `sep` as a means to separate argument values.

    Example:

        Option opt = Option.builder("D").hasArgs().valueSeparator('=').build();
        Options options = new Options();
        options.addOption(opt);
        String[] args = { "-Dkey=value" };
        CommandLineParser parser = new DefaultParser();
        CommandLine line = parser.parse(options, args);
        String propertyName = line.getOptionValues("D")[0]; // will be "key"
        String propertyValue = line.getOptionValues("D")[1]; // will be "value"

    Parameters:
      `valueSeparator` - The value separator.
    Returns:
      this builder.