Utility methods to deal with generic types.
Modifiers | Name | Description |
---|---|---|
static GenericsType[] |
EMPTY_GENERICS_ARRAY |
Type | Name and description |
---|---|
static Map<String, ClassNode> |
addMethodGenerics(MethodNode current, Map<String, ClassNode> oldSpec) |
static GenericsType[] |
alignGenericTypes(GenericsType[] redirectGenericTypes, GenericsType[] parameterizedTypes, GenericsType[] alignmentTarget) Given a parameterized type and a generic type information, aligns actual type parameters. |
static GenericsType[] |
applyGenericsContextToPlaceHolders(Map<String, ClassNode> genericsSpec, GenericsType[] oldPlaceHolders) transforms generics types from an old context to a new context using the given spec. |
static GenericsType |
buildWildcardType(ClassNode... types) Generates a wildcard generic type in order to be used for checks against class nodes. |
static MethodNode |
correctToGenericsSpec(Map<String, ClassNode> genericsSpec, MethodNode mn) |
static ClassNode |
correctToGenericsSpec(Map<String, ClassNode> genericsSpec, GenericsType type) |
static ClassNode |
correctToGenericsSpec(Map<String, ClassNode> genericsSpec, ClassNode type) |
static ClassNode |
correctToGenericsSpecRecurse(Map<String, ClassNode> genericsSpec, ClassNode type) |
static ClassNode |
correctToGenericsSpecRecurse(Map<String, ClassNode> genericsSpec, ClassNode type, List<String> exclusions) |
static Map<String, ClassNode> |
createGenericsSpec(ClassNode current) |
static Map<String, ClassNode> |
createGenericsSpec(ClassNode current, Map<String, ClassNode> oldSpec) |
static Map<String, GenericsType> |
extractPlaceholders(ClassNode cn) |
static void |
extractPlaceholders(ClassNode node, Map<String, GenericsType> map) For a given classnode, fills in the supplied map with the parameterized types it defines. |
static void |
extractSuperClassGenerics(ClassNode type, ClassNode target, Map<String, ClassNode> spec) |
static ClassNode |
makeClassSafe(Class klass) |
static ClassNode |
makeClassSafe0(ClassNode type, GenericsType... genericTypes) |
static ClassNode |
makeClassSafeWithGenerics(Class klass, ClassNode genericsType) |
static ClassNode |
makeClassSafeWithGenerics(ClassNode type, GenericsType... genericTypes) |
static ClassNode |
newClass(ClassNode type) |
static ClassNode |
nonGeneric(ClassNode type) |
static ClassNode |
parameterizeInterfaceGenerics(ClassNode hint, ClassNode target) Interface class nodes retrieved from ClassNode.getInterfaces or ClassNode.getAllInterfaces are returned with generic type arguments. |
static ClassNode |
parameterizeType(ClassNode hint, ClassNode target) Interface class nodes retrieved from ClassNode.getInterfaces or ClassNode.getAllInterfaces are returned with generic type arguments. |
Given a parameterized type and a generic type information, aligns actual type parameters. For example, if a class uses generic type
<T,U,V>(redirectGenericTypes), is used with actual type parameters
<java.lang.String, U,V>, then a class or interface using generic types
<T,V>will be aligned to
<java.lang.String,V>
redirectGenericTypes
- the type arguments or the redirect class nodeparameterizedTypes
- the actual type arguments used on this class nodealignmentTarget
- the generic type arguments to which we want to align totransforms generics types from an old context to a new context using the given spec. This method assumes all generics types will be placeholders. WARNING: The resulting generics types may or may not be placeholders after the transformation.
genericsSpec
- the generics context information specoldPlaceHolders
- the old placeholdersGenerates a wildcard generic type in order to be used for checks against class nodes. See GenericsType#isCompatibleWith(org.codehaus.groovy.ast.ClassNode).
types
- the type to be used as the wildcard upper boundFor a given classnode, fills in the supplied map with the parameterized types it defines.
Interface class nodes retrieved from ClassNode.getInterfaces or ClassNode.getAllInterfaces are returned with generic type arguments. This method allows returning a parameterized interface given the parameterized class node which implements this interface.
hint
- the class node where generics types are parameterizedtarget
- the interface we want to parameterize generics typesInterface class nodes retrieved from ClassNode.getInterfaces or ClassNode.getAllInterfaces are returned with generic type arguments. This method allows returning a parameterized interface given the parameterized class node which implements this interface.
hint
- the class node where generics types are parameterizedtarget
- the interface we want to parameterize generics types