Package org.springframework.http.converter

# Interface GenericHttpMessageConverter<T>

Type Parameters:
  `T` - the converted object type

All Superinterfaces:
  `HttpMessageConverter<T>`

All Known Implementing Classes:
  `AbstractGenericHttpMessageConverter`, `AbstractJackson2HttpMessageConverter`, `AbstractJsonHttpMessageConverter`, `GsonHttpMessageConverter`, `Jaxb2CollectionHttpMessageConverter`, `JsonbHttpMessageConverter`, `MappingJackson2CborHttpMessageConverter`, `MappingJackson2HttpMessageConverter`, `MappingJackson2SmileHttpMessageConverter`, `MappingJackson2XmlHttpMessageConverter`, `MappingJackson2YamlHttpMessageConverter`, `ResourceRegionHttpMessageConverter`

public interface GenericHttpMessageConverter<T> extends HttpMessageConverter<T>
A specialization of `HttpMessageConverter` that can convert an HTTP request into a target object of a specified generic type and a source object of a specified generic type into an HTTP response.

Since:
  3.2
Author:
  Arjen Poutsma, Rossen Stoyanchev, Sebastien Deleuze
See Also:
  - `ParameterizedTypeReference`
  - `SmartHttpMessageConverter`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`canRead(Type type, Class<?> contextClass, MediaType mediaType)`
Indicates whether the given type can be read by this converter.
`boolean`
`canWrite(Type type, Class<?> clazz, MediaType mediaType)`
Indicates whether the given class can be written by this converter.
`T`
`read(Type type, Class<?> contextClass, HttpInputMessage inputMessage)`
Read an object of the given type from the given input message, and returns it.
`void`
`write(T t, Type type, MediaType contentType, HttpOutputMessage outputMessage)`
Write a given object to the given output message.

### Methods inherited from interface org.springframework.http.converter.HttpMessageConverter

`canRead, canWrite, getSupportedMediaTypes, getSupportedMediaTypes, read, write`

## Method Details

### canRead

boolean canRead(Type type, @Nullable Class<?> contextClass, @Nullable MediaType mediaType)
Indicates whether the given type can be read by this converter. This method should perform the same checks as `HttpMessageConverter.canRead(Class, MediaType)` with additional ones related to the generic type.

Parameters:
  `type` - the (potentially generic) type to test for readability
  `contextClass` - a context class for the target type, for example a class in which the target type appears in a method signature (can be `null`)
  `mediaType` - the media type to read, can be `null` if not specified. Typically, the value of a `Content-Type` header.
Returns:
  `true` if readable; `false` otherwise

### read

T read(Type type, @Nullable Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException
Read an object of the given type from the given input message, and returns it.

Parameters:
  `type` - the (potentially generic) type of object to return. This type must have previously been passed to the `canRead` method of this interface, which must have returned `true`.
  `contextClass` - a context class for the target type, for example a class in which the target type appears in a method signature (can be `null`)
  `inputMessage` - the HTTP input message to read from
Returns:
  the converted object
Throws:
  `IOException` - in case of I/O errors
  `HttpMessageNotReadableException` - in case of conversion errors

### canWrite

boolean canWrite(@Nullable Type type, Class<?> clazz, @Nullable MediaType mediaType)
Indicates whether the given class can be written by this converter.

This method should perform the same checks as `HttpMessageConverter.canWrite(Class, MediaType)` with additional ones related to the generic type.

Parameters:
  `type` - the (potentially generic) type to test for writability (can be `null` if not specified)
  `clazz` - the source object class to test for writability
  `mediaType` - the media type to write (can be `null` if not specified); typically the value of an `Accept` header.
Returns:
  `true` if writable; `false` otherwise
Since:
  4.2

### write

void write(T t, @Nullable Type type, @Nullable MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException
Write a given object to the given output message.

Parameters:
  `t` - the object to write to the output message. The type of this object must have previously been passed to the `canWrite` method of this interface, which must have returned `true`.
  `type` - the (potentially generic) type of object to write. This type must have previously been passed to the `canWrite` method of this interface, which must have returned `true`. Can be `null` if not specified.
  `contentType` - the content type to use when writing. May be `null` to indicate that the default content type of the converter must be used. If not `null`, this media type must have previously been passed to the `canWrite` method of this interface, which must have returned `true`.
  `outputMessage` - the message to write to
Throws:
  `IOException` - in case of I/O errors
  `HttpMessageNotWritableException` - in case of conversion errors
Since:
  4.2