package com.fasterxml.jackson.databind.util;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.type.TypeFactory;
Helper interface for things that convert Objects of
one type to another.
NOTE: implementors are strongly encouraged to extend StdConverter
instead of directly implementing Converter
, since that can help with default implementation of typically boiler-plate code.
Type parameters: See Also: Since: 2.1
/**
* Helper interface for things that convert Objects of
* one type to another.
*<p>
* NOTE: implementors are strongly encouraged to extend {@link StdConverter}
* instead of directly implementing {@link Converter}, since that can
* help with default implementation of typically boiler-plate code.
*
* @param <IN> Type of values converter takes
* @param <OUT> Result type from conversion
*
* @see com.fasterxml.jackson.databind.ser.std.StdDelegatingSerializer
* @see com.fasterxml.jackson.databind.deser.std.StdDelegatingDeserializer
*
* @since 2.1
*/
public interface Converter<IN,OUT>
{
Main conversion method.
/**
* Main conversion method.
*/
public OUT convert(IN value);
Method that can be used to find out actual input (source) type; this
usually can be determined from type parameters, but may need
to be implemented differently from programmatically defined
converters (which cannot change static type parameter bindings).
Since: 2.2
/**
* Method that can be used to find out actual input (source) type; this
* usually can be determined from type parameters, but may need
* to be implemented differently from programmatically defined
* converters (which cannot change static type parameter bindings).
*
* @since 2.2
*/
public JavaType getInputType(TypeFactory typeFactory);
Method that can be used to find out actual output (target) type; this
usually can be determined from type parameters, but may need
to be implemented differently from programmatically defined
converters (which cannot change static type parameter bindings).
Since: 2.2
/**
* Method that can be used to find out actual output (target) type; this
* usually can be determined from type parameters, but may need
* to be implemented differently from programmatically defined
* converters (which cannot change static type parameter bindings).
*
* @since 2.2
*/
public JavaType getOutputType(TypeFactory typeFactory);
/*
/**********************************************************
/* Helper class(es)
/**********************************************************
*/
This marker class is only to be used with annotations, to
indicate that no converter is to be used.
Specifically, this class is to be used as the marker for annotation JsonSerialize
, property converter
(and related)
Since: 2.2
/**
* This marker class is only to be used with annotations, to
* indicate that <b>no converter is to be used</b>.
*<p>
* Specifically, this class is to be used as the marker for
* annotation {@link com.fasterxml.jackson.databind.annotation.JsonSerialize},
* property <code>converter</code> (and related)
*
* @since 2.2
*/
public abstract static class None
implements Converter<Object,Object> { }
}