public abstract class JavaType extends com.fasterxml.jackson.core.type.ResolvedType implements Serializable, Type
Instances can (only) be constructed by
com.fasterxml.jackson.databind.type.TypeFactory
.
Since 2.2 this implements Type
to allow
it to be pushed through interfaces that only expose that type.
Modifier and Type | Field and Description |
---|---|
protected boolean |
_asStatic
Whether entities defined with this type should be handled using
static typing (as opposed to dynamic runtime type) or not.
|
protected Class<?> |
_class
This is the nominal type-erased Class that would be close to the
type represented (but not exactly type, due to type erasure: type
instance may have more information on this).
|
protected int |
_hash |
protected Object |
_typeHandler
Optional handler that can be attached to indicate how to handle
additional type metadata associated with this type.
|
protected Object |
_valueHandler
Optional handler (codec) that can be attached to indicate
what to use for handling (serializing, deserializing) values of
this specific type.
|
Modifier | Constructor and Description |
---|---|
protected |
JavaType(Class<?> raw,
int additionalHash,
Object valueHandler,
Object typeHandler,
boolean asStatic) |
Modifier and Type | Method and Description |
---|---|
protected void |
_assertSubclass(Class<?> subclass,
Class<?> superClass) |
protected abstract JavaType |
_narrow(Class<?> subclass) |
protected JavaType |
_widen(Class<?> superclass)
Default implementation is just to call
_narrow(java.lang.Class<?>) , since
underlying type construction is usually identical |
JavaType |
containedType(int index) |
int |
containedTypeCount() |
String |
containedTypeName(int index) |
JavaType |
containedTypeOrUnknown(int index)
Convenience method that is functionally same as:
JavaType t = containedType(index);
if (t == null) {
t = TypeFactory.unknownType();
}
and typically used to eliminate need for null checks for common case
where we just want to check if containedType is available first; and
if not, use "unknown type" (which translates to java.lang.Object
basically). |
abstract boolean |
equals(Object o) |
JavaType |
forcedNarrowBy(Class<?> subclass)
More efficient version of
narrowBy(java.lang.Class<?>) , called by
internal framework in cases where compatibility checks
are to be skipped. |
JavaType |
getContentType() |
String |
getErasedSignature()
Method for accessing signature without generic
type information, in form compatible with all versions
of JVM, and specifically used for type descriptions
when generating byte code.
|
abstract StringBuilder |
getErasedSignature(StringBuilder sb)
Method for accessing signature without generic
type information, in form compatible with all versions
of JVM, and specifically used for type descriptions
when generating byte code.
|
String |
getGenericSignature()
Method for accessing signature that contains generic
type information, in form compatible with JVM 1.5
as per JLS.
|
abstract StringBuilder |
getGenericSignature(StringBuilder sb) |
JavaType |
getKeyType() |
abstract Class<?> |
getParameterSource() |
Class<?> |
getRawClass() |
<T> T |
getTypeHandler()
Method for accessing type handler associated with this type, if any
|
<T> T |
getValueHandler()
Method for accessing value handler associated with this type, if any
|
boolean |
hasGenericTypes() |
int |
hashCode() |
boolean |
hasRawClass(Class<?> clz)
Method that can be used to check whether this type has
specified Class as its type erasure.
|
boolean |
isAbstract() |
boolean |
isArrayType() |
boolean |
isCollectionLikeType() |
boolean |
isConcrete()
Convenience method for checking whether underlying Java type
is a concrete class or not: abstract classes and interfaces
are not.
|
abstract boolean |
isContainerType() |
boolean |
isEnumType() |
boolean |
isFinal() |
boolean |
isInterface() |
boolean |
isMapLikeType() |
boolean |
isPrimitive() |
boolean |
isThrowable() |
JavaType |
narrowBy(Class<?> subclass)
Method that can be called to do a "narrowing" conversions; that is,
to return a type with a raw class that is assignable to the raw
class of this type.
|
abstract JavaType |
narrowContentsBy(Class<?> contentClass) |
abstract String |
toString() |
boolean |
useStaticType()
Accessor for checking whether handlers for dealing with values of
this type should use static typing (as opposed to dynamic typing).
|
JavaType |
widenBy(Class<?> superclass)
Method that can be called to do a "widening" conversions; that is,
to return a type with a raw class that could be assigned from this
type.
|
abstract JavaType |
widenContentsBy(Class<?> contentClass) |
abstract JavaType |
withContentTypeHandler(Object h)
"Copy method" that will construct a new instance that is identical to
this instance, except that its content type will have specified
type handler assigned.
|
abstract JavaType |
withContentValueHandler(Object h)
"Copy method" that will construct a new instance that is identical to
this instance, except that it will have specified content value handler assigned.
|
abstract JavaType |
withStaticTyping()
Method that can be called to get a type instance that indicates
that values of the type should be handled using "static typing" for purposes
of serialization (as opposed to "dynamic" aka runtime typing):
meaning that no runtime information is needed for determining serializers to use.
|
abstract JavaType |
withTypeHandler(Object h)
"Copy method" that will construct a new instance that is identical to
this instance, except that it will have specified type handler assigned.
|
abstract JavaType |
withValueHandler(Object h)
"Copy method" that will construct a new instance that is identical to
this instance, except that it will have specified value handler assigned.
|
protected final Class<?> _class
protected final int _hash
protected final Object _valueHandler
Note: untyped (i.e. caller has to cast) because it is used for different kinds of handlers, with unrelated types.
protected final Object _typeHandler
Note: untyped (i.e. caller has to cast) because it is used for different kinds of handlers, with unrelated types.
protected final boolean _asStatic
public abstract JavaType withTypeHandler(Object h)
public abstract JavaType withContentTypeHandler(Object h)
public abstract JavaType withValueHandler(Object h)
public abstract JavaType withContentValueHandler(Object h)
public abstract JavaType withStaticTyping()
public JavaType narrowBy(Class<?> subclass)
IllegalArgumentException
is thrown.
If class is same as the current raw class, instance itself is
returned.public JavaType forcedNarrowBy(Class<?> subclass)
narrowBy(java.lang.Class<?>)
, called by
internal framework in cases where compatibility checks
are to be skipped.public JavaType widenBy(Class<?> superclass)
IllegalArgumentException
is thrown.
If class is same as the current raw class, instance itself is
returned.protected JavaType _widen(Class<?> superclass)
Default implementation is just to call _narrow(java.lang.Class<?>)
, since
underlying type construction is usually identical
public final Class<?> getRawClass()
getRawClass
in class com.fasterxml.jackson.core.type.ResolvedType
public final boolean hasRawClass(Class<?> clz)
hasRawClass
in class com.fasterxml.jackson.core.type.ResolvedType
public boolean isAbstract()
isAbstract
in class com.fasterxml.jackson.core.type.ResolvedType
public boolean isConcrete()
isConcrete
in class com.fasterxml.jackson.core.type.ResolvedType
public boolean isThrowable()
isThrowable
in class com.fasterxml.jackson.core.type.ResolvedType
public boolean isArrayType()
isArrayType
in class com.fasterxml.jackson.core.type.ResolvedType
public final boolean isEnumType()
isEnumType
in class com.fasterxml.jackson.core.type.ResolvedType
public final boolean isInterface()
isInterface
in class com.fasterxml.jackson.core.type.ResolvedType
public final boolean isPrimitive()
isPrimitive
in class com.fasterxml.jackson.core.type.ResolvedType
public final boolean isFinal()
isFinal
in class com.fasterxml.jackson.core.type.ResolvedType
public abstract boolean isContainerType()
isContainerType
in class com.fasterxml.jackson.core.type.ResolvedType
public boolean isCollectionLikeType()
isCollectionLikeType
in class com.fasterxml.jackson.core.type.ResolvedType
Collection
type,
or something similar (meaning it has at least one type parameter,
which describes type of contents)public boolean isMapLikeType()
isMapLikeType
in class com.fasterxml.jackson.core.type.ResolvedType
Map
type,
or something similar (meaning it has at least two type parameter;
first one describing key type, second value type)public final boolean useStaticType()
public boolean hasGenericTypes()
hasGenericTypes
in class com.fasterxml.jackson.core.type.ResolvedType
public JavaType getKeyType()
getKeyType
in class com.fasterxml.jackson.core.type.ResolvedType
public JavaType getContentType()
getContentType
in class com.fasterxml.jackson.core.type.ResolvedType
public int containedTypeCount()
containedTypeCount
in class com.fasterxml.jackson.core.type.ResolvedType
public JavaType containedType(int index)
containedType
in class com.fasterxml.jackson.core.type.ResolvedType
public String containedTypeName(int index)
containedTypeName
in class com.fasterxml.jackson.core.type.ResolvedType
public abstract Class<?> getParameterSource()
getParameterSource
in class com.fasterxml.jackson.core.type.ResolvedType
public JavaType containedTypeOrUnknown(int index)
JavaType t = containedType(index);
if (t == null) {
t = TypeFactory.unknownType();
}
and typically used to eliminate need for null checks for common case
where we just want to check if containedType is available first; and
if not, use "unknown type" (which translates to java.lang.Object
basically).public <T> T getValueHandler()
public <T> T getTypeHandler()
public String getGenericSignature()
getErasedSignature()
,
in that generic information can be automatically removed
if necessary (just remove outermost
angle brackets along with content inside)public abstract StringBuilder getGenericSignature(StringBuilder sb)
sb
- StringBuilder to append signature topublic String getErasedSignature()
public abstract StringBuilder getErasedSignature(StringBuilder sb)
sb
- StringBuilder to append signature toCopyright © 2014-2015 FasterXML. All Rights Reserved.