abstract class SerializableTypeWrapper
extends java.lang.Object
Serializable
variants
of Type
s.
Fields
or MethodParameters
can be used as the root source for a serializable type. Alternatively
the superclass
,
interfaces
or type parameters
or a regular Class
can also be used as source.
The returned type will either be a Class
or a serializable proxy of
GenericArrayType
, ParameterizedType
, TypeVariable
or
WildcardType
. With the exception of Class
(which is final) calls to
methods that return further Type
s (for example
GenericArrayType.getGenericComponentType()
) will be automatically wrapped.
Modifier and Type | Class and Description |
---|---|
private static class |
SerializableTypeWrapper.DefaultTypeProvider
Default implementation of
SerializableTypeWrapper.TypeProvider with a null source. |
(package private) static class |
SerializableTypeWrapper.FieldTypeProvider
|
(package private) static class |
SerializableTypeWrapper.MethodInvokeTypeProvider
SerializableTypeWrapper.TypeProvider for Type s obtained by invoking a no-arg method. |
(package private) static class |
SerializableTypeWrapper.MethodParameterTypeProvider
|
(package private) static interface |
SerializableTypeWrapper.SerializableTypeProxy
Additional interface implemented by the type proxy.
|
(package private) static interface |
SerializableTypeWrapper.TypeProvider
A
Serializable interface providing access to a Type . |
private static class |
SerializableTypeWrapper.TypeProxyInvocationHandler
Serializable InvocationHandler used by the Proxied Type . |
Modifier and Type | Field and Description |
---|---|
private static ConcurrentReferenceHashMap<java.lang.reflect.Type,java.lang.reflect.Type> |
cache |
private static java.lang.reflect.Method |
EQUALS_METHOD |
private static java.lang.reflect.Method |
GET_TYPE_PROVIDER_METHOD |
private static java.lang.Class<?>[] |
SUPPORTED_SERIALIZABLE_TYPES |
Constructor and Description |
---|
SerializableTypeWrapper() |
Modifier and Type | Method and Description |
---|---|
static java.lang.reflect.Type |
forField(java.lang.reflect.Field field)
Return a
Serializable variant of Field.getGenericType() . |
static java.lang.reflect.Type[] |
forGenericInterfaces(java.lang.Class<?> type)
Return a
Serializable variant of Class.getGenericInterfaces() . |
static java.lang.reflect.Type |
forGenericSuperclass(java.lang.Class<?> type)
Return a
Serializable variant of Class.getGenericSuperclass() . |
static java.lang.reflect.Type |
forMethodParameter(MethodParameter methodParameter)
Return a
Serializable variant of
MethodParameter.getGenericParameterType() . |
static java.lang.reflect.Type[] |
forTypeParameters(java.lang.Class<?> type)
Return a
Serializable variant of Class.getTypeParameters() . |
(package private) static java.lang.reflect.Type |
forTypeProvider(SerializableTypeWrapper.TypeProvider provider)
|
static <T extends java.lang.reflect.Type> |
unwrap(T type)
Unwrap the given type, effectively returning the original non-serializable type.
|
private static final java.lang.Class<?>[] SUPPORTED_SERIALIZABLE_TYPES
private static final java.lang.reflect.Method EQUALS_METHOD
private static final java.lang.reflect.Method GET_TYPE_PROVIDER_METHOD
private static final ConcurrentReferenceHashMap<java.lang.reflect.Type,java.lang.reflect.Type> cache
public static java.lang.reflect.Type forField(java.lang.reflect.Field field)
Serializable
variant of Field.getGenericType()
.public static java.lang.reflect.Type forMethodParameter(MethodParameter methodParameter)
Serializable
variant of
MethodParameter.getGenericParameterType()
.public static java.lang.reflect.Type forGenericSuperclass(java.lang.Class<?> type)
Serializable
variant of Class.getGenericSuperclass()
.public static java.lang.reflect.Type[] forGenericInterfaces(java.lang.Class<?> type)
Serializable
variant of Class.getGenericInterfaces()
.public static java.lang.reflect.Type[] forTypeParameters(java.lang.Class<?> type)
Serializable
variant of Class.getTypeParameters()
.public static <T extends java.lang.reflect.Type> T unwrap(T type)
type
- the type to unwrapstatic java.lang.reflect.Type forTypeProvider(SerializableTypeWrapper.TypeProvider provider)