org.springframework.core.convert.converter

## Interface GenericConverter

- All Known Subinterfaces:
    ConditionalGenericConverter

      public interface GenericConverter

  Generic converter interface for converting between two or more types.

  This is the most flexible of the Converter SPI interfaces, but also the most complex. It is flexible in that a GenericConverter may support converting between multiple source/target type pairs (see `getConvertibleTypes()`. In addition, GenericConverter implementations have access to source/target `field context` during the type conversion process. This allows for resolving source and target field metadata such as annotations and generics information, which can be used influence the conversion logic.

  This interface should generally not be used when the simpler `Converter` or `ConverterFactory` interfaces are sufficient.

  Implementations may additionally implement `ConditionalConverter`.

  Since:
    3.0
  Author:
    Keith Donald, Juergen Hoeller
  See Also:
    `TypeDescriptor`, `Converter`, `ConverterFactory`, `ConditionalConverter`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static class` | `GenericConverter.ConvertiblePair` Holder for a source-to-target class pair.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Object` | `convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType)` Convert the source to the targetType described by the TypeDescriptor.
    `Set<GenericConverter.ConvertiblePair>` | `getConvertibleTypes()` Return the source and target types which this converter can convert between.

- - ### Method Detail

    - #### getConvertibleTypes

          Set<GenericConverter.ConvertiblePair> getConvertibleTypes()

      Return the source and target types which this converter can convert between. Each entry is a convertible source-to-target type pair.

      For `conditional` converters this method may return `null` to indicate all source-to-target pairs should be considered. *

    - #### convert

          Object convert(Object source,
                       TypeDescriptor sourceType,
                       TypeDescriptor targetType)

      Convert the source to the targetType described by the TypeDescriptor.
      Parameters:
        `source` - the source object to convert (may be null)
        `sourceType` - the type descriptor of the field we are converting from
        `targetType` - the type descriptor of the field we are converting to
      Returns:
        the converted object