Package org.springframework.core.convert

# Interface ConversionService

All Known Subinterfaces:
  `ConfigurableConversionService`

All Known Implementing Classes:
  `DefaultConversionService`, `GenericConversionService`

public interface ConversionService
A service interface for type conversion. This is the entry point into the convert system. Call `convert(Object, Class)` to perform a thread-safe type conversion using this system.

Since:
  3.0
Author:
  Keith Donald, Phillip Webb

## Method Summary

Modifier and Type
Method
Description
`boolean`
`canConvert(Class<?> sourceType, Class<?> targetType)`
Return `true` if objects of `sourceType` can be converted to the `targetType`.
`boolean`
`canConvert(TypeDescriptor sourceType, TypeDescriptor targetType)`
Return `true` if objects of `sourceType` can be converted to the `targetType`.
`<T> T`
`convert(Object source, Class<T> targetType)`
Convert the given `source` to the specified `targetType`.
`default Object`
`convert(Object source, TypeDescriptor targetType)`
Convert the given `source` to the specified `targetType`.
`Object`
`convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType)`
Convert the given `source` to the specified `targetType`.

## Method Details

### canConvert

boolean canConvert(@Nullable Class<?> sourceType, Class<?> targetType)
Return `true` if objects of `sourceType` can be converted to the `targetType`.

If this method returns `true`, it means `convert(Object, Class)` is capable of converting an instance of `sourceType` to `targetType`.

Special note on collections, arrays, and maps types: For conversion between collection, array, and map types, this method will return `true` even though a convert invocation may still generate a `ConversionException` if the underlying elements are not convertible. Callers are expected to handle this exceptional case when working with collections and maps.

Parameters:
  `sourceType` - the source type to convert from (may be `null` if source is `null`)
  `targetType` - the target type to convert to (required)
Returns:
  `true` if a conversion can be performed, `false` if not
Throws:
  `IllegalArgumentException` - if `targetType` is `null`

### canConvert

boolean canConvert(@Nullable TypeDescriptor sourceType, TypeDescriptor targetType)
Return `true` if objects of `sourceType` can be converted to the `targetType`. The TypeDescriptors provide additional context about the source and target locations where conversion would occur, often object fields or property locations.

If this method returns `true`, it means `convert(Object, TypeDescriptor, TypeDescriptor)` is capable of converting an instance of `sourceType` to `targetType`.

Special note on collections, arrays, and maps types: For conversion between collection, array, and map types, this method will return `true` even though a convert invocation may still generate a `ConversionException` if the underlying elements are not convertible. Callers are expected to handle this exceptional case when working with collections and maps.

Parameters:
  `sourceType` - context about the source type to convert from (may be `null` if source is `null`)
  `targetType` - context about the target type to convert to (required)
Returns:
  `true` if a conversion can be performed between the source and target types, `false` if not
Throws:
  `IllegalArgumentException` - if `targetType` is `null`

### convert

@Nullable <T> T convert(@Nullable Object source, Class<T> targetType)
Convert the given `source` to the specified `targetType`.

Parameters:
  `source` - the source object to convert (may be `null`)
  `targetType` - the target type to convert to (required)
Returns:
  the converted object, an instance of targetType
Throws:
  `ConversionException` - if a conversion exception occurred
  `IllegalArgumentException` - if targetType is `null`

### convert

@Nullable default Object convert(@Nullable Object source, TypeDescriptor targetType)
Convert the given `source` to the specified `targetType`.

Delegates to `convert(Object, TypeDescriptor, TypeDescriptor)` and encapsulates the construction of the source type descriptor using `TypeDescriptor.forObject(Object)`.

Parameters:
  `source` - the source object
  `targetType` - the target type
Returns:
  the converted value
Throws:
  `ConversionException` - if a conversion exception occurred
  `IllegalArgumentException` - if targetType is `null`
Since:
  6.1

### convert

@Nullable Object convert(@Nullable Object source, @Nullable TypeDescriptor sourceType, TypeDescriptor targetType)
Convert the given `source` to the specified `targetType`. The TypeDescriptors provide additional context about the source and target locations where conversion will occur, often object fields or property locations.

Parameters:
  `source` - the source object to convert (may be `null`)
  `sourceType` - context about the source type to convert from (may be `null` if source is `null`)
  `targetType` - context about the target type to convert to (required)
Returns:
  the converted object, an instance of `targetType`
Throws:
  `ConversionException` - if a conversion exception occurred
  `IllegalArgumentException` - if targetType is `null`, or `sourceType` is `null` but source is not `null`