public interface Navigator<T,C,F,M>
java.lang.reflect
and/or Annotation Processing.
This interface provides navigation over the reflection model
to decouple the caller from any particular implementation.
This allows the JAXB RI to reuse much of the code between
the compile time (which works on top of Annotation Processing) and the run-time
(which works on top of java.lang.reflect
)
Navigator
instances are stateless and immutable.
A Java class declaration (not an interface, a class and an enum.)
A Java type. This includs declaration, but also includes such things like arrays, primitive types, parameterized types, and etc.
Modifier and Type | Method and Description |
---|---|
C |
asDecl(Class c)
Gets the
C representation for the given class. |
C |
asDecl(T type)
If the given type is an use of class declaration,
returns the type casted as
C . |
<P> T |
erasure(T contentInMemoryType)
Computes the erasure
|
T |
getBaseClass(T type,
C baseType)
Gets the parameterization of the given base type.
|
Location |
getClassLocation(C clazz)
Returns a location of the specified class.
|
String |
getClassName(C clazz)
Gets the fully-qualified name of the class.
|
String |
getClassShortName(C clazz)
Gets the short name of the class ("Object" for
Object .)
For nested classes, this method should just return the inner name. |
T |
getComponentType(T t)
Gets the component type of the array.
|
F |
getDeclaredField(C clazz,
String fieldName)
Gets the named field declared on the given class.
|
Collection<? extends F> |
getDeclaredFields(C clazz)
Gets all the declared fields of the given class.
|
Collection<? extends M> |
getDeclaredMethods(C clazz)
Gets all the declared methods of the given class
(regardless of their access modifiers, regardless
of whether they override methods of the base classes.)
|
C |
getDeclaringClassForField(F field)
Gets the class that declares the given field.
|
C |
getDeclaringClassForMethod(M method)
Gets the class that declares the given method.
|
F[] |
getEnumConstants(C clazz)
Gets the enumeration constants from an enum class.
|
Location |
getFieldLocation(F field) |
String |
getFieldName(F field)
Gets the name of the field.
|
T |
getFieldType(F f)
Gets the type of the field.
|
Location |
getMethodLocation(M getter) |
String |
getMethodName(M m)
Gets the name of the method, such as "toString" or "equals".
|
T[] |
getMethodParameters(M method)
Returns the list of parameters to the method.
|
String |
getPackageName(C clazz)
Gets the package name of the given class.
|
T |
getPrimitive(Class primitiveType)
Returns the representation for the given primitive type.
|
T |
getReturnType(M m)
Gets the return type of a method.
|
C |
getSuperClass(C clazz)
Gets the base class of the specified class.
|
T |
getTypeArgument(T t,
int i)
Gets the i-th type argument from a parameterized type.
|
String |
getTypeName(T rawType)
Gets the display name of the type object
|
T |
getVoidType()
Gets the representation of the primitive "void" type.
|
boolean |
hasDefaultConstructor(C clazz)
Returns true if the given class has a no-arg default constructor.
|
boolean |
isAbstract(C clazz)
Returns true if this is an abstract class.
|
boolean |
isArray(T t)
Checks if the type is an array type.
|
boolean |
isArrayButNotByteArray(T t)
Checks if the type is an array type but not byte[].
|
boolean |
isBridgeMethod(M method)
Returns true if this method is a bridge method as defined in JLS.
|
boolean |
isEnum(C clazz)
Returns true if this is an enum class.
|
boolean |
isFinal(C clazz)
Returns true if this is a final class.
|
boolean |
isFinalMethod(M method)
Returns true if the method is final.
|
boolean |
isInnerClass(C clazz)
Returns true if the given class is an inner class.
|
boolean |
isInterface(C clazz)
Returns true if 'clazz' is an interface.
|
boolean |
isOverriding(M method,
C base)
Returns true if the given method is overriding another one
defined in the base class 'base' or its ancestors.
|
boolean |
isParameterizedType(T t)
Returns true if t is a parameterized type.
|
boolean |
isPrimitive(T t)
Checks if the given type is a primitive type.
|
boolean |
isPublicField(F field)
Returns true if the field is public.
|
boolean |
isPublicMethod(M method)
Returns true if the method is public.
|
boolean |
isSameType(T t1,
T t2)
Checks if types are the same
|
boolean |
isStaticField(F field)
Returns true if the field is static.
|
boolean |
isStaticMethod(M method)
Returns true if the method is static.
|
boolean |
isSubClassOf(T sub,
T sup)
Checks if
sub is a sub-type of sup . |
boolean |
isTransient(F f)
Returns true if the field is transient.
|
C |
loadObjectFactory(C referencePoint,
String packageName)
Finds ObjectFactory for the given referencePoint.
|
T |
ref(Class c)
Gets the representation of the given Java type in
T . |
T |
use(C c)
Gets the T for the given C.
|
C getSuperClass(C clazz)
Object
.T getBaseClass(T type, C baseType)
For example, given the following
interface Foo<T> extends List<List<T>> {}
interface Bar extends Foo<String> {}
This method works like this:
getBaseClass( Bar, List ) = List<List<String>>
getBaseClass( Bar, Foo ) = Foo<String>
getBaseClass( Foo<? extends Number>, Collection ) = Collection<List<? extends Number>>
getBaseClass( ArrayList<? extends BigInteger>, List ) = List<? extends BigInteger>
type
- The type that derives from baseType
baseType
- The class whose parameterization we are interested in.baseType
in type
.
or null if the type is not assignable to the base type.String getClassName(C clazz)
Object
)String getTypeName(T rawType)
String getClassShortName(C clazz)
Object
.)
For nested classes, this method should just return the inner name.
(for example "Inner" for "com.acme.Outer$Inner".Collection<? extends F> getDeclaredFields(C clazz)
F getDeclaredField(C clazz, String fieldName)
Collection<? extends M> getDeclaredMethods(C clazz)
Note that this method does not list methods declared on base classes.
C getDeclaringClassForField(F field)
C getDeclaringClassForMethod(M method)
String getMethodName(M m)
boolean isStaticMethod(M method)
boolean isSubClassOf(T sub, T sup)
sub
is a sub-type of sup
.
TODO: should this method take T or C?T ref(Class c)
T
.c
- can be a primitive, array, class, or anything.
(therefore the return type has to be T, not C)C asDecl(T type)
C
.
Otherwise null.
TODO: define the exact semantics.
C asDecl(Class c)
C
representation for the given class.
The behavior is undefined if the class object represents
primitives, arrays, and other types that are not class declaration.boolean isArray(T t)
boolean isArrayButNotByteArray(T t)
T getComponentType(T t)
t
- must be an array.T getTypeArgument(T t, int i)
getTypeArgument([Map<Integer,String>],0)=Integer
IllegalArgumentException
- If t is not a parameterized typeIndexOutOfBoundsException
- If i is out of range.isParameterizedType(Object)
boolean isParameterizedType(T t)
boolean isPrimitive(T t)
T getPrimitive(Class primitiveType)
primitiveType
- must be Class objects like Integer.TYPE
.boolean hasDefaultConstructor(C clazz)
boolean isStaticField(F field)
boolean isPublicMethod(M method)
boolean isFinalMethod(M method)
boolean isPublicField(F field)
boolean isEnum(C clazz)
boolean isAbstract(C clazz)
boolean isFinal(C clazz)
F[] getEnumConstants(C clazz)
clazz
- must derive from Enum
.T getVoidType()
String getPackageName(C clazz)
C loadObjectFactory(C referencePoint, String packageName)
referencePoint
- The class that refers to the specified class.boolean isBridgeMethod(M method)
boolean isOverriding(M method, C base)
boolean isInterface(C clazz)
boolean isTransient(F f)
boolean isInnerClass(C clazz)
Copyright © 2021 JBoss by Red Hat. All rights reserved.