public final class TypeFactory extends Object
JavaType
instances,
given various inputs.
As of Jackson 1.8, usage should be done using instance configured
via ObjectMapper
(and exposed through
DeserializationConfig
and
SerializationConfig
).
However, old static-singleton access methods are supported as well; however,
using those may cause issues with extension modules that register
"type enchancers".
Typical usage pattern before Jackson 1.8 was to statically import factory methods
of this class, to allow convenient instantiation of structured
types, especially Collection
and Map
types
to represent generic types. For example
mapType(String.class, Integer.class)to represent
Map<String,Integer>This is an alternative to using
TypeReference
that would
be something like
new TypeReference<Map<String,Integer>>() { }
Modifier and Type | Field and Description |
---|---|
protected HierarchicType |
_cachedArrayListType
Lazily constructed copy of type hierarchy from
ArrayList
to its supertypes. |
protected HierarchicType |
_cachedHashMapType
Lazily constructed copy of type hierarchy from
HashMap
to its supertypes. |
protected TypeModifier[] |
_modifiers
Registered
TypeModifier s: objects that can change details
of JavaType instances factory constructs. |
protected TypeParser |
_parser |
static TypeFactory |
instance
Deprecated.
As of 1.8, should use a per-ObjectMapper instance instead
of global singleton
|
Modifier | Constructor and Description |
---|---|
protected |
TypeFactory(TypeParser p,
TypeModifier[] mods) |
Modifier and Type | Method and Description |
---|---|
protected HierarchicType |
_arrayListSuperInterfaceChain(HierarchicType current) |
JavaType |
_constructType(Type type,
TypeBindings context)
Factory method that can be used if type information is passed
as Java typing returned from
getGenericXxx methods
(usually for a return or argument type). |
protected HierarchicType |
_doFindSuperInterfaceChain(HierarchicType current,
Class<?> target) |
protected HierarchicType |
_findSuperClassChain(Type currentType,
Class<?> target) |
protected HierarchicType |
_findSuperInterfaceChain(Type currentType,
Class<?> target) |
protected HierarchicType |
_findSuperTypeChain(Class<?> subtype,
Class<?> supertype)
Helper method used to find inheritance (implements, extends) path
between given types, if one exists (caller generally checks before
calling this method).
|
protected JavaType |
_fromArrayType(GenericArrayType type,
TypeBindings context) |
protected JavaType |
_fromClass(Class<?> clz,
TypeBindings context) |
protected JavaType |
_fromParameterizedClass(Class<?> clz,
List<JavaType> paramTypes)
Method used by
TypeParser when generics-aware version
is constructed. |
protected JavaType |
_fromParamType(ParameterizedType type,
TypeBindings context)
This method deals with parameterized types, that is,
first class generic classes.
|
protected JavaType |
_fromVariable(TypeVariable<?> type,
TypeBindings context) |
protected JavaType |
_fromWildcard(WildcardType type,
TypeBindings context) |
protected HierarchicType |
_hashMapSuperInterfaceChain(HierarchicType current) |
protected JavaType |
_resolveVariableViaSubTypes(HierarchicType leafType,
String variableName,
TypeBindings bindings) |
protected JavaType |
_unknownType() |
static JavaType |
arrayType(Class<?> elementType)
Deprecated.
|
static JavaType |
arrayType(JavaType elementType)
Deprecated.
|
static JavaType |
collectionType(Class<? extends Collection> collectionType,
Class<?> elementType)
Deprecated.
|
static JavaType |
collectionType(Class<? extends Collection> collectionType,
JavaType elementType)
Deprecated.
|
ArrayType |
constructArrayType(Class<?> elementType)
Method for constructing an
ArrayType . |
ArrayType |
constructArrayType(JavaType elementType)
Method for constructing an
ArrayType . |
CollectionLikeType |
constructCollectionLikeType(Class<?> collectionClass,
Class<?> elementClass)
Method for constructing a
CollectionLikeType . |
CollectionLikeType |
constructCollectionLikeType(Class<?> collectionClass,
JavaType elementType)
Method for constructing a
CollectionLikeType . |
CollectionType |
constructCollectionType(Class<? extends Collection> collectionClass,
Class<?> elementClass)
Method for constructing a
CollectionType . |
CollectionType |
constructCollectionType(Class<? extends Collection> collectionClass,
JavaType elementType)
Method for constructing a
CollectionType . |
JavaType |
constructFromCanonical(String canonical)
Factory method for constructing a
JavaType out of its canonical
representation (see JavaType.toCanonical() ). |
MapLikeType |
constructMapLikeType(Class<?> mapClass,
Class<?> keyClass,
Class<?> valueClass)
Method for constructing a
MapLikeType instance |
MapLikeType |
constructMapLikeType(Class<?> mapClass,
JavaType keyType,
JavaType valueType)
Method for constructing a
MapLikeType instance |
MapType |
constructMapType(Class<? extends Map> mapClass,
Class<?> keyClass,
Class<?> valueClass)
Method for constructing a
MapType instance |
MapType |
constructMapType(Class<? extends Map> mapClass,
JavaType keyType,
JavaType valueType)
Method for constructing a
MapType instance |
JavaType |
constructParametricType(Class<?> parametrized,
Class<?>... parameterClasses)
Factory method for constructing
JavaType that
represents a parameterized type. |
JavaType |
constructParametricType(Class<?> parametrized,
JavaType... parameterTypes)
Factory method for constructing
JavaType that
represents a parameterized type. |
CollectionLikeType |
constructRawCollectionLikeType(Class<?> collectionClass)
Method that can be used to construct "raw" Collection-like type; meaning that its
parameterization is unknown.
|
CollectionType |
constructRawCollectionType(Class<? extends Collection> collectionClass)
Method that can be used to construct "raw" Collection type; meaning that its
parameterization is unknown.
|
MapLikeType |
constructRawMapLikeType(Class<?> mapClass)
Method that can be used to construct "raw" Map-like type; meaning that its
parameterization is unknown.
|
MapType |
constructRawMapType(Class<? extends Map> mapClass)
Method that can be used to construct "raw" Map type; meaning that its
parameterization is unknown.
|
JavaType |
constructSimpleType(Class<?> rawType,
JavaType[] parameterTypes)
Method for constructing a type instance with specified parameterization.
|
JavaType |
constructSpecializedType(JavaType baseType,
Class<?> subclass)
Factory method for creating a subtype of given base type, as defined
by specified subclass; but retaining generic type information if any.
|
JavaType |
constructType(Type type) |
JavaType |
constructType(Type type,
Class<?> context) |
JavaType |
constructType(Type type,
JavaType context) |
JavaType |
constructType(TypeReference<?> typeRef) |
JavaType |
constructType(Type type,
TypeBindings bindings) |
static TypeFactory |
defaultInstance()
Method used to access the globally shared instance, which has
no custom configuration.
|
static JavaType |
fastSimpleType(Class<?> cls)
Deprecated.
|
static JavaType[] |
findParameterTypes(Class<?> clz,
Class<?> expType)
Deprecated.
|
static JavaType[] |
findParameterTypes(Class<?> clz,
Class<?> expType,
TypeBindings bindings)
Deprecated.
|
static JavaType[] |
findParameterTypes(JavaType type,
Class<?> expType)
Deprecated.
|
JavaType[] |
findTypeParameters(Class<?> clz,
Class<?> expType) |
JavaType[] |
findTypeParameters(Class<?> clz,
Class<?> expType,
TypeBindings bindings) |
JavaType[] |
findTypeParameters(JavaType type,
Class<?> expType)
Method that is to figure out actual type parameters that given
class binds to generic types defined by given (generic)
interface or class.
|
static JavaType |
fromCanonical(String canonical) |
static JavaType |
fromClass(Class<?> clz)
Deprecated.
Use
type(Type) instead |
static JavaType |
fromType(Type type)
Deprecated.
Use
type(Type) instead |
static JavaType |
fromTypeReference(TypeReference<?> ref)
Deprecated.
Use
type(Type) instead |
static JavaType |
mapType(Class<? extends Map> mapClass,
Class<?> keyType,
Class<?> valueType)
Deprecated.
|
static JavaType |
mapType(Class<? extends Map> mapType,
JavaType keyType,
JavaType valueType)
Deprecated.
|
static JavaType |
parametricType(Class<?> parametrized,
Class<?>... parameterClasses)
Deprecated.
|
static JavaType |
parametricType(Class<?> parametrized,
JavaType... parameterTypes)
Deprecated.
|
static Class<?> |
rawClass(Type t) |
static JavaType |
specialize(JavaType baseType,
Class<?> subclass)
Deprecated.
|
static JavaType |
type(Type t)
Deprecated.
|
static JavaType |
type(Type type,
Class<?> context)
Deprecated.
|
static JavaType |
type(Type type,
JavaType context)
Deprecated.
|
static JavaType |
type(TypeReference<?> ref)
Deprecated.
|
static JavaType |
type(Type type,
TypeBindings bindings)
Deprecated.
|
JavaType |
uncheckedSimpleType(Class<?> cls)
Method that will force construction of a simple type, without trying to
check for more specialized types.
|
static JavaType |
unknownType()
Method for constructing a marker type that indicates missing generic
type information, which is handled same as simple type for
java.lang.Object . |
TypeFactory |
withModifier(TypeModifier mod) |
@Deprecated public static final TypeFactory instance
defaultInstance()
for accessing it.protected final TypeModifier[] _modifiers
TypeModifier
s: objects that can change details
of JavaType
instances factory constructs.protected final TypeParser _parser
protected HierarchicType _cachedHashMapType
HashMap
to its supertypes.protected HierarchicType _cachedArrayListType
ArrayList
to its supertypes.protected TypeFactory(TypeParser p, TypeModifier[] mods)
public TypeFactory withModifier(TypeModifier mod)
public static TypeFactory defaultInstance()
ObjectMapper
to
get the default factory when constructed.public static JavaType unknownType()
java.lang.Object
.@Deprecated public static JavaType type(Type t)
@Deprecated public static JavaType type(Type type, Class<?> context)
@Deprecated public static JavaType type(Type type, JavaType context)
@Deprecated public static JavaType type(Type type, TypeBindings bindings)
@Deprecated public static JavaType type(TypeReference<?> ref)
@Deprecated public static JavaType arrayType(Class<?> elementType)
@Deprecated public static JavaType arrayType(JavaType elementType)
@Deprecated public static JavaType collectionType(Class<? extends Collection> collectionType, Class<?> elementType)
@Deprecated public static JavaType collectionType(Class<? extends Collection> collectionType, JavaType elementType)
@Deprecated public static JavaType mapType(Class<? extends Map> mapClass, Class<?> keyType, Class<?> valueType)
@Deprecated public static JavaType mapType(Class<? extends Map> mapType, JavaType keyType, JavaType valueType)
@Deprecated public static JavaType parametricType(Class<?> parametrized, Class<?>... parameterClasses)
@Deprecated public static JavaType parametricType(Class<?> parametrized, JavaType... parameterTypes)
public static JavaType fromCanonical(String canonical) throws IllegalArgumentException
IllegalArgumentException
@Deprecated public static JavaType specialize(JavaType baseType, Class<?> subclass)
@Deprecated public static JavaType fastSimpleType(Class<?> cls)
@Deprecated public static JavaType[] findParameterTypes(Class<?> clz, Class<?> expType)
@Deprecated public static JavaType[] findParameterTypes(Class<?> clz, Class<?> expType, TypeBindings bindings)
@Deprecated public static JavaType[] findParameterTypes(JavaType type, Class<?> expType)
@Deprecated public static JavaType fromClass(Class<?> clz)
type(Type)
insteadClass
. This means that there
will not be generic type information due to type erasure,
but at least it will be possible to recognize array
types and non-typed container types.
And for other types (primitives/wrappers, beans), this
is all that is needed.@Deprecated public static JavaType fromTypeReference(TypeReference<?> ref)
type(Type)
insteadTypeReference
. This only needs to be
done if the root type to bind to is generic; but if so,
it must be done to get proper typing.@Deprecated public static JavaType fromType(Type type)
type(Type)
insteadgetGenericXxx
methods
(usually for a return or argument type).public JavaType constructSpecializedType(JavaType baseType, Class<?> subclass)
HashMap.class
as subclass.public JavaType constructFromCanonical(String canonical) throws IllegalArgumentException
JavaType
out of its canonical
representation (see JavaType.toCanonical()
).canonical
- Canonical string representation of a typeIllegalArgumentException
- If canonical representation is malformed,
or class that type represents (including its generic parameters) is
not foundpublic JavaType[] findTypeParameters(JavaType type, Class<?> expType)
type
- Sub-type (leaf type) that implements expType
public JavaType[] findTypeParameters(Class<?> clz, Class<?> expType, TypeBindings bindings)
public JavaType constructType(Type type, TypeBindings bindings)
public JavaType constructType(TypeReference<?> typeRef)
public JavaType _constructType(Type type, TypeBindings context)
getGenericXxx
methods
(usually for a return or argument type).public ArrayType constructArrayType(Class<?> elementType)
ArrayType
.
NOTE: type modifiers are NOT called on array type itself; but are called for element type (and other contained types)
public ArrayType constructArrayType(JavaType elementType)
ArrayType
.
NOTE: type modifiers are NOT called on array type itself; but are called for contained types.
public CollectionType constructCollectionType(Class<? extends Collection> collectionClass, Class<?> elementClass)
CollectionType
.
NOTE: type modifiers are NOT called on Collection type itself; but are called for contained types.
public CollectionType constructCollectionType(Class<? extends Collection> collectionClass, JavaType elementType)
CollectionType
.
NOTE: type modifiers are NOT called on Collection type itself; but are called for contained types.
public CollectionLikeType constructCollectionLikeType(Class<?> collectionClass, Class<?> elementClass)
CollectionLikeType
.
NOTE: type modifiers are NOT called on constructed type itself; but are called for contained types.
public CollectionLikeType constructCollectionLikeType(Class<?> collectionClass, JavaType elementType)
CollectionLikeType
.
NOTE: type modifiers are NOT called on constructed type itself; but are called for contained types.
public MapType constructMapType(Class<? extends Map> mapClass, JavaType keyType, JavaType valueType)
MapType
instance
NOTE: type modifiers are NOT called on constructed type itself; but are called for contained types.
public MapType constructMapType(Class<? extends Map> mapClass, Class<?> keyClass, Class<?> valueClass)
MapType
instance
NOTE: type modifiers are NOT called on constructed type itself; but are called for contained types.
public MapLikeType constructMapLikeType(Class<?> mapClass, JavaType keyType, JavaType valueType)
MapLikeType
instance
NOTE: type modifiers are NOT called on constructed type itself; but are called for contained types.
public MapLikeType constructMapLikeType(Class<?> mapClass, Class<?> keyClass, Class<?> valueClass)
MapLikeType
instance
NOTE: type modifiers are NOT called on constructed type itself; but are called for contained types.
public JavaType constructSimpleType(Class<?> rawType, JavaType[] parameterTypes)
public JavaType uncheckedSimpleType(Class<?> cls)
NOTE: no type modifiers are called on type either, so calling this method should only be used if caller really knows what it's doing...
public JavaType constructParametricType(Class<?> parametrized, Class<?>... parameterClasses)
JavaType
that
represents a parameterized type. For example, to represent
type List<Set<Integer>>
, you could
call
TypeFactory.parametricType(List.class, Integer.class);
NOTE: type modifiers are NOT called on constructed type itself; but are called for contained types.
public JavaType constructParametricType(Class<?> parametrized, JavaType... parameterTypes)
JavaType
that
represents a parameterized type. For example, to represent
type List<Set<Integer>>
, you could
call
JavaType inner = TypeFactory.parametricType(Set.class, Integer.class); TypeFactory.parametricType(List.class, inner);
NOTE: type modifiers are NOT called on constructed type itself; but are called for contained types.
public CollectionType constructRawCollectionType(Class<? extends Collection> collectionClass)
Object.class
parameterization,
and is equivalent to calling:
typeFactory.constructCollectionType(collectionClass, typeFactory.unknownType());This method should only be used if parameterization is completely unavailable.
public CollectionLikeType constructRawCollectionLikeType(Class<?> collectionClass)
Object.class
parameterization,
and is equivalent to calling:
typeFactory.constructCollectionLikeType(collectionClass, typeFactory.unknownType());This method should only be used if parameterization is completely unavailable.
public MapType constructRawMapType(Class<? extends Map> mapClass)
Object.class
parameterization,
and is equivalent to calling:
typeFactory.constructMapType(collectionClass, typeFactory.unknownType(), typeFactory.unknownType());This method should only be used if parameterization is completely unavailable.
public MapLikeType constructRawMapLikeType(Class<?> mapClass)
Object.class
parameterization,
and is equivalent to calling:
typeFactory.constructMapLikeType(collectionClass, typeFactory.unknownType(), typeFactory.unknownType());This method should only be used if parameterization is completely unavailable.
protected JavaType _fromClass(Class<?> clz, TypeBindings context)
context
- Mapping of formal parameter declarations (for generic
types) into actual typesprotected JavaType _fromParameterizedClass(Class<?> clz, List<JavaType> paramTypes)
TypeParser
when generics-aware version
is constructed.protected JavaType _fromParamType(ParameterizedType type, TypeBindings context)
Since version 1.2, this resolves all parameterized types, not just Maps or Collections.
protected JavaType _fromArrayType(GenericArrayType type, TypeBindings context)
protected JavaType _fromVariable(TypeVariable<?> type, TypeBindings context)
protected JavaType _fromWildcard(WildcardType type, TypeBindings context)
protected JavaType _resolveVariableViaSubTypes(HierarchicType leafType, String variableName, TypeBindings bindings)
protected JavaType _unknownType()
protected HierarchicType _findSuperTypeChain(Class<?> subtype, Class<?> supertype)
protected HierarchicType _findSuperClassChain(Type currentType, Class<?> target)
protected HierarchicType _findSuperInterfaceChain(Type currentType, Class<?> target)
protected HierarchicType _doFindSuperInterfaceChain(HierarchicType current, Class<?> target)
protected HierarchicType _hashMapSuperInterfaceChain(HierarchicType current)
protected HierarchicType _arrayListSuperInterfaceChain(HierarchicType current)