Interface Setter<T>

All Known Implementing Classes:
ArrayFieldSetter, FieldSetter, MethodSetter, MultiValueFieldSetter

public interface Setter<T>
Abstraction of the value setter.

This abstracts away the difference between a field and a setter method, which object we are setting the value to, and/or how we handle collection fields differently.

See Also:
  • Method Details

    • addValue

      void addValue(T value) throws CmdLineException
      Adds/sets a value to the property of the option bean.

      A Setter object has an implicit knowledge about the property it's setting, and the instance of the option bean.

      Throws:
      CmdLineException
    • getType

      Class<T> getType()
      Gets the type of the underlying method/field.
    • isMultiValued

      boolean isMultiValued()
      Whether this setter is intrinsically multi-valued.

      When parsing arguments (instead of options), intrinsically multi-valued setters consume all the remaining arguments. So, if the setter can store multiple values, this method should return true.

      This characteristics of a setter doesn't affect option parsing at all; any options can be specified multiple times. In many cases, this is a no-op--but when your shell script expands multiple environment variables (each of which may contain options), tolerating such redundant options can be useful.

    • asFieldSetter

      FieldSetter asFieldSetter()
      If this setter encapsulates a field, return the direct access to that field as FieldSetter. This method serves two purposes:
      1. This lets OptionHandlers bypass the collection/array handling of fields. This is useful if you're defining an option handler that produces array or collection from a single argument.
      2. The other is to retrieve the current value of the field (via FieldSetter.getValueList()).
      Returns:
      null if this setter wraps a method.
    • asAnnotatedElement

      AnnotatedElement asAnnotatedElement()
      Returns the AnnotatedElement by which you can access annotations written on this setter. This is the same AnnotatedElement that had Option/Argument.

      This enables OptionHandler to further tweak its behavior based on additional annotations.