This interface only exists for documentation of the concept of a
variant. An operation may have a variant
that influences its behavior. This can be anything from a strategy (e.g. "bubble-sort" for a sort operation) to
something that causes additional steps to take place (e.g. "keep-backup" for a save operation). In general it is
recommended by making this explicit by different signatures with reasonable names. However, sometimes there is need
for generic code to call a single operation with different variants. In such case an additional argument can
represent which variant of the operation shall be used. This can be done in one of the following ways:
- take the variant as
Object for ultimate flexibility and only link to Variant for documentation.
- take the variant as
Variant to make it more expressive but also more invasive.
- take a specific type (e.g.
Enum or Pojo) as input that may implement this interface for
documentation purpose (but is not required to do so).
In any case you should avoid casting a given
Variant. Instead, whenever possible use a simple type for
Variant such as an
Enum or
String (from a constant). Then you can do something like
if (MyVariantEnum.SPECIAL == variant) { doSomethingSpecial(); } ....
ATTENTION:
If not documented otherwise a
Variant may always be
null what is typically the default.