public class TypeFactory
extends java.lang.Object
implements java.io.Serializable
JavaType instances,
given various inputs.
Instances of this class are accessible using ObjectMapper
as well as many objects it constructs (like
DeserializationConfig and
SerializationConfig)),
but usually those objects also
expose convenience methods (constructType).
So, you can do for example:
JavaType stringType = mapper.constructType(String.class);However, more advanced methods are only exposed by factory so that you may need to use:
JavaType stringCollection = mapper.getTypeFactory().constructCollectionType(List.class, String.class);
| Modifier and Type | Method and Description |
|---|---|
void |
clearCache()
Method that will clear up any cached type definitions that may
be cached by this
TypeFactory instance. |
ArrayType |
constructArrayType(java.lang.Class<?> elementType)
Method for constructing an
ArrayType. |
ArrayType |
constructArrayType(JavaType elementType)
Method for constructing an
ArrayType. |
CollectionLikeType |
constructCollectionLikeType(java.lang.Class<?> collectionClass,
java.lang.Class<?> elementClass)
Method for constructing a
CollectionLikeType. |
CollectionLikeType |
constructCollectionLikeType(java.lang.Class<?> collectionClass,
JavaType elementType)
Method for constructing a
CollectionLikeType. |
CollectionType |
constructCollectionType(java.lang.Class<? extends java.util.Collection> collectionClass,
java.lang.Class<?> elementClass)
Method for constructing a
CollectionType. |
CollectionType |
constructCollectionType(java.lang.Class<? extends java.util.Collection> collectionClass,
JavaType elementType)
Method for constructing a
CollectionType. |
JavaType |
constructFromCanonical(java.lang.String canonical)
Factory method for constructing a
JavaType out of its canonical
representation (see ResolvedType.toCanonical()). |
JavaType |
constructGeneralizedType(JavaType baseType,
java.lang.Class<?> superClass)
Method similar to
constructSpecializedType(com.fasterxml.jackson.databind.JavaType, java.lang.Class<?>), but that creates a
less-specific type of given type. |
MapLikeType |
constructMapLikeType(java.lang.Class<?> mapClass,
java.lang.Class<?> keyClass,
java.lang.Class<?> valueClass)
Method for constructing a
MapLikeType instance |
MapLikeType |
constructMapLikeType(java.lang.Class<?> mapClass,
JavaType keyType,
JavaType valueType)
Method for constructing a
MapLikeType instance |
MapType |
constructMapType(java.lang.Class<? extends java.util.Map> mapClass,
java.lang.Class<?> keyClass,
java.lang.Class<?> valueClass)
Method for constructing a
MapType instance |
MapType |
constructMapType(java.lang.Class<? extends java.util.Map> mapClass,
JavaType keyType,
JavaType valueType)
Method for constructing a
MapType instance |
JavaType |
constructParametricType(java.lang.Class<?> parametrized,
java.lang.Class<?>... parameterClasses)
Factory method for constructing
JavaType that
represents a parameterized type. |
JavaType |
constructParametricType(java.lang.Class<?> rawType,
JavaType... parameterTypes)
Factory method for constructing
JavaType that
represents a parameterized type. |
JavaType |
constructParametricType(java.lang.Class<?> rawType,
TypeBindings parameterTypes)
Factory method for constructing
JavaType that
represents a parameterized type. |
JavaType |
constructParametrizedType(java.lang.Class<?> parametrized,
java.lang.Class<?> parametersFor,
java.lang.Class<?>... parameterClasses)
Deprecated.
since 2.9 Use
constructParametricType(Class,Class...) instead |
JavaType |
constructParametrizedType(java.lang.Class<?> parametrized,
java.lang.Class<?> parametersFor,
JavaType... parameterTypes)
Deprecated.
since 2.9 Use
constructParametricType(Class,JavaType...) instead |
CollectionLikeType |
constructRawCollectionLikeType(java.lang.Class<?> collectionClass)
Method that can be used to construct "raw" Collection-like type; meaning that its
parameterization is unknown.
|
CollectionType |
constructRawCollectionType(java.lang.Class<? extends java.util.Collection> collectionClass)
Method that can be used to construct "raw" Collection type; meaning that its
parameterization is unknown.
|
MapLikeType |
constructRawMapLikeType(java.lang.Class<?> mapClass)
Method that can be used to construct "raw" Map-like type; meaning that its
parameterization is unknown.
|
MapType |
constructRawMapType(java.lang.Class<? extends java.util.Map> mapClass)
Method that can be used to construct "raw" Map type; meaning that its
parameterization is unknown.
|
JavaType |
constructReferenceType(java.lang.Class<?> rawType,
JavaType referredType)
Method for constructing a
ReferenceType instance with given type parameter
(type MUST take one and only one type parameter) |
JavaType |
constructSimpleType(java.lang.Class<?> rawType,
java.lang.Class<?> parameterTarget,
JavaType[] parameterTypes)
Deprecated.
Since 2.7
|
JavaType |
constructSimpleType(java.lang.Class<?> rawType,
JavaType[] parameterTypes)
Method for constructing a type instance with specified parameterization.
|
JavaType |
constructSpecializedType(JavaType baseType,
java.lang.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 |
constructSpecializedType(JavaType baseType,
java.lang.Class<?> subclass,
boolean relaxedCompatibilityCheck)
Factory method for creating a subtype of given base type, as defined
by specified subclass; but retaining generic type information if any.
|
JavaType |
constructType(java.lang.reflect.Type type) |
JavaType |
constructType(java.lang.reflect.Type type,
java.lang.Class<?> contextClass)
Deprecated.
Since 2.7 (accidentally removed in 2.7.0; added back in 2.7.1)
|
JavaType |
constructType(java.lang.reflect.Type type,
JavaType contextType)
Deprecated.
Since 2.7 (accidentally removed in 2.7.0; added back in 2.7.1)
|
JavaType |
constructType(TypeReference<?> typeRef) |
JavaType |
constructType(java.lang.reflect.Type type,
TypeBindings bindings)
Deprecated.
Since 2.12
|
static TypeFactory |
defaultInstance()
Method used to access the globally shared instance, which has
no custom configuration.
|
java.lang.Class<?> |
findClass(java.lang.String className)
Low-level lookup method moved from
ClassUtil,
to allow for overriding of lookup functionality in environments like OSGi. |
JavaType[] |
findTypeParameters(java.lang.Class<?> clz,
java.lang.Class<?> expType)
Deprecated.
Since 2.7 resolve raw type first, then find type parameters
|
JavaType[] |
findTypeParameters(java.lang.Class<?> clz,
java.lang.Class<?> expType,
TypeBindings bindings)
Deprecated.
Since 2.7 resolve raw type first, then find type parameters
|
JavaType[] |
findTypeParameters(JavaType type,
java.lang.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.
|
java.lang.ClassLoader |
getClassLoader() |
JavaType |
moreSpecificType(JavaType type1,
JavaType type2)
Method that can be called to figure out more specific of two
types (if they are related; that is, one implements or extends the
other); or if not related, return the primary type.
|
static java.lang.Class<?> |
rawClass(java.lang.reflect.Type t)
Static helper method that can be called to figure out type-erased
call for given JDK type.
|
JavaType |
resolveMemberType(java.lang.reflect.Type type,
TypeBindings contextBindings)
Method to call when resolving types of
Members
like Fields, Methods and Constructor parameters and there is a
TypeBindings (that describes binding of type parameters within
context) to pass. |
JavaType |
uncheckedSimpleType(java.lang.Class<?> cls)
Deprecated.
Since 2.8, to indicate users should never call this method.
|
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 |
withCache(LookupCache<java.lang.Object,JavaType> cache)
Mutant factory method that will construct new
TypeFactory with
identical settings except for different cache; most likely one with
bigger maximum size. |
TypeFactory |
withCache(LRUMap<java.lang.Object,JavaType> cache)
Deprecated.
Since 2.12
|
TypeFactory |
withClassLoader(java.lang.ClassLoader classLoader)
"Mutant factory" method which will construct a new instance with specified
ClassLoader to use by findClass(java.lang.String). |
TypeFactory |
withModifier(TypeModifier mod)
"Mutant factory" method which will construct a new instance with specified
TypeModifier added as the first modifier to call (in case there
are multiple registered). |
public TypeFactory withModifier(TypeModifier mod)
TypeModifier added as the first modifier to call (in case there
are multiple registered).public TypeFactory withClassLoader(java.lang.ClassLoader classLoader)
ClassLoader to use by findClass(java.lang.String).@Deprecated public TypeFactory withCache(LRUMap<java.lang.Object,JavaType> cache)
TypeFactory with
identical settings except for different cache; most likely one with
bigger maximum size.public TypeFactory withCache(LookupCache<java.lang.Object,JavaType> cache)
TypeFactory with
identical settings except for different cache; most likely one with
bigger maximum size.public static TypeFactory defaultInstance()
ObjectMapper to
get the default factory when constructed.public void clearCache()
TypeFactory instance.
This method should not be commonly used, that is, only use it
if you know there is a problem with retention of type definitions;
the most likely (and currently only known) problem is retention
of Class instances via JavaType reference.public java.lang.ClassLoader getClassLoader()
public static JavaType unknownType()
java.lang.Object.public static java.lang.Class<?> rawClass(java.lang.reflect.Type t)
public java.lang.Class<?> findClass(java.lang.String className)
throws java.lang.ClassNotFoundException
ClassUtil,
to allow for overriding of lookup functionality in environments like OSGi.java.lang.ClassNotFoundExceptionpublic JavaType constructSpecializedType(JavaType baseType, java.lang.Class<?> subclass) throws java.lang.IllegalArgumentException
HashMap.class
as subclass.
Short-cut for:
constructSpecializedType(baseType, subclass, class);that is, will use "strict" compatibility checking, usually used for deserialization purposes (but often not for serialization).
java.lang.IllegalArgumentExceptionpublic JavaType constructSpecializedType(JavaType baseType, java.lang.Class<?> subclass, boolean relaxedCompatibilityCheck) throws java.lang.IllegalArgumentException
HashMap.class
as subclass.baseType - Declared base type with resolved type parameterssubclass - Runtime subtype to use for resolvingrelaxedCompatibilityCheck - Whether checking for type-assignment compatibility
should be "relaxed" (true) or "strict" (false): typically
serialization uses relaxed, deserialization strict checking.java.lang.IllegalArgumentExceptionpublic JavaType constructGeneralizedType(JavaType baseType, java.lang.Class<?> superClass)
constructSpecializedType(com.fasterxml.jackson.databind.JavaType, java.lang.Class<?>), but that creates a
less-specific type of given type. Usually this is as simple as simply
finding super-type with type erasure of superClass, but
there may be need for some additional work-arounds.superClass - public JavaType constructFromCanonical(java.lang.String canonical) throws java.lang.IllegalArgumentException
JavaType out of its canonical
representation (see ResolvedType.toCanonical()).canonical - Canonical string representation of a typejava.lang.IllegalArgumentException - If canonical representation is malformed,
or class that type represents (including its generic parameters) is
not foundpublic JavaType[] findTypeParameters(JavaType type, java.lang.Class<?> expType)
type - Sub-type (leaf type) that implements expType@Deprecated public JavaType[] findTypeParameters(java.lang.Class<?> clz, java.lang.Class<?> expType, TypeBindings bindings)
@Deprecated public JavaType[] findTypeParameters(java.lang.Class<?> clz, java.lang.Class<?> expType)
public JavaType moreSpecificType(JavaType type1, JavaType type2)
type1 - Primary type to considertype2 - Secondary type to considerpublic JavaType constructType(java.lang.reflect.Type type)
public JavaType constructType(TypeReference<?> typeRef)
public JavaType resolveMemberType(java.lang.reflect.Type type, TypeBindings contextBindings)
Members
like Fields, Methods and Constructor parameters and there is a
TypeBindings (that describes binding of type parameters within
context) to pass.
This is typically used only by code in databind itself.type - Type of a Member to resolvecontextBindings - Type bindings from the context, often class in which
member declared but may be subtype of that type (to bind actual bound
type parametrers). Not used if type is of type Class<?>.constructType(Type, TypeBindings)@Deprecated public JavaType constructType(java.lang.reflect.Type type, TypeBindings bindings)
TypeBindings and even then it will probably
not do what you want.
Usually you would instead want to call one of constructXxxType()
methods (where Xxx would be "Array", "Collection[Like]", "Map[Like]"
or "Parametric").@Deprecated public JavaType constructType(java.lang.reflect.Type type, java.lang.Class<?> contextClass)
@Deprecated public JavaType constructType(java.lang.reflect.Type type, JavaType contextType)
public ArrayType constructArrayType(java.lang.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(java.lang.Class<? extends java.util.Collection> collectionClass, java.lang.Class<?> elementClass)
CollectionType.
NOTE: type modifiers are NOT called on Collection type itself; but are called for contained types.
public CollectionType constructCollectionType(java.lang.Class<? extends java.util.Collection> collectionClass, JavaType elementType)
CollectionType.
NOTE: type modifiers are NOT called on Collection type itself; but are called for contained types.
public CollectionLikeType constructCollectionLikeType(java.lang.Class<?> collectionClass, java.lang.Class<?> elementClass)
CollectionLikeType.
NOTE: type modifiers are NOT called on constructed type itself; but are called for contained types.
public CollectionLikeType constructCollectionLikeType(java.lang.Class<?> collectionClass, JavaType elementType)
CollectionLikeType.
NOTE: type modifiers are NOT called on constructed type itself; but are called for contained types.
public MapType constructMapType(java.lang.Class<? extends java.util.Map> mapClass, java.lang.Class<?> keyClass, java.lang.Class<?> valueClass)
MapType instance
NOTE: type modifiers are NOT called on constructed type itself; but are called for contained types.
public MapType constructMapType(java.lang.Class<? extends java.util.Map> mapClass, JavaType keyType, JavaType valueType)
MapType instance
NOTE: type modifiers are NOT called on constructed type itself.
public MapLikeType constructMapLikeType(java.lang.Class<?> mapClass, java.lang.Class<?> keyClass, java.lang.Class<?> valueClass)
MapLikeType instance
NOTE: type modifiers are NOT called on constructed type itself; but are called for contained types.
public MapLikeType constructMapLikeType(java.lang.Class<?> mapClass, JavaType keyType, JavaType valueType)
MapLikeType instance
NOTE: type modifiers are NOT called on constructed type itself.
public JavaType constructSimpleType(java.lang.Class<?> rawType, JavaType[] parameterTypes)
NOTE: type modifiers are NOT called on constructed type itself.
@Deprecated public JavaType constructSimpleType(java.lang.Class<?> rawType, java.lang.Class<?> parameterTarget, JavaType[] parameterTypes)
public JavaType constructReferenceType(java.lang.Class<?> rawType, JavaType referredType)
ReferenceType instance with given type parameter
(type MUST take one and only one type parameter)
NOTE: type modifiers are NOT called on constructed type itself.
@Deprecated public JavaType uncheckedSimpleType(java.lang.Class<?> cls)
Unchecked here not only means that no checks are made as to whether given class
might be non-simple type (like CollectionType) but also that most of supertype
information is not gathered. This means that unless called on primitive types or
String, results are probably not what you want to use.
public JavaType constructParametricType(java.lang.Class<?> parametrized, java.lang.Class<?>... parameterClasses)
JavaType that
represents a parameterized type. For example, to represent
type List<Set<Integer>>, you could
call
JavaType inner = TypeFactory.constructParametricType(Set.class, Integer.class); return TypeFactory.constructParametricType(List.class, inner);
NOTE: since 2.11.2 TypeModifiers ARE called on result (fix for [databind#2796])
parametrized - Type-erased type to parameterizeparameterClasses - Type parameters to applypublic JavaType constructParametricType(java.lang.Class<?> rawType, JavaType... parameterTypes)
JavaType that
represents a parameterized type. For example, to represent
type List<Set<Integer>>, you could
JavaType inner = TypeFactory.constructParametricType(Set.class, Integer.class); return TypeFactory.constructParametricType(List.class, inner);
NOTE: since 2.11.2 TypeModifiers ARE called on result (fix for [databind#2796])
rawType - Actual type-erased typeparameterTypes - Type parameters to applypublic JavaType constructParametricType(java.lang.Class<?> rawType, TypeBindings parameterTypes)
JavaType that
represents a parameterized type. The type's parameters are
specified as an instance of TypeBindings. This
is useful if you already have the type's parameters such
as those found on JavaType. For example, you could call
return TypeFactory.constructParametricType(ArrayList.class, javaType.getBindings());This effectively applies the parameterized types from one
JavaType to another class.rawType - Actual type-erased typeparameterTypes - Type bindings for the raw type@Deprecated public JavaType constructParametrizedType(java.lang.Class<?> parametrized, java.lang.Class<?> parametersFor, JavaType... parameterTypes)
constructParametricType(Class,JavaType...) instead@Deprecated public JavaType constructParametrizedType(java.lang.Class<?> parametrized, java.lang.Class<?> parametersFor, java.lang.Class<?>... parameterClasses)
constructParametricType(Class,Class...) insteadpublic CollectionType constructRawCollectionType(java.lang.Class<? extends java.util.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(java.lang.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(java.lang.Class<? extends java.util.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(java.lang.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.
Copyright © 2010 - 2023 Adobe. All Rights Reserved