Package com.google.common.reflect
Class TypeVisitor
java.lang.Object
com.google.common.reflect.TypeVisitor
- Direct Known Subclasses:
TypeResolver.TypeMappingIntrospector
Based on what a
Type
is, dispatch it to the corresponding visit*
method. By
default, no recursion is done for type arguments or type bounds. But subclasses can opt to do
recursion by calling visit(java.lang.reflect.Type...)
for any Type
while visitation is in progress. For
example, this can be used to reject wildcards or type variables contained in a type as in:
new TypeVisitor() {
protected void visitParameterizedType(ParameterizedType t) {
visit(t.getOwnerType());
visit(t.getActualTypeArguments());
}
protected void visitGenericArrayType(GenericArrayType t) {
visit(t.getGenericComponentType());
}
protected void visitTypeVariable(TypeVariable<?> t) {
throw new IllegalArgumentException("Cannot contain type variable.");
}
protected void visitWildcardType(WildcardType t) {
throw new IllegalArgumentException("Cannot contain wildcard type.");
}
}.visit(type);
One Type
is visited at most once. The second time the same type is visited, it's
ignored by visit(java.lang.reflect.Type...)
. This avoids infinite recursion caused by recursive type bounds.
This class is not thread safe.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal void
Visits the given types.(package private) void
visitClass
(Class<?> t) (package private) void
(package private) void
(package private) void
(package private) void
-
Field Details
-
visited
-
-
Constructor Details
-
TypeVisitor
TypeVisitor()
-
-
Method Details
-
visit
Visits the given types. Null types are ignored. This allows subclasses to callvisit(parameterizedType.getOwnerType())
safely without having to check nulls. -
visitClass
-
visitGenericArrayType
-
visitParameterizedType
-
visitTypeVariable
-
visitWildcardType
-