Utility methods to deal with generic types.
Modifiers | Name | Description |
---|---|---|
static GenericsType[] |
EMPTY_GENERICS_ARRAY |
|
static String |
JAVA_LANG_OBJECT |
Type Params | Return 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[] types) @since 2.4.1 |
|
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 |
getSuperClass(ClassNode type, ClassNode target) |
|
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. |
|
static ClassNode[] |
parseClassNodesFromString(String option, org.codehaus.groovy.control.SourceUnit sourceUnit, CompilationUnit compilationUnit, MethodNode mn, ASTNode usage) |
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 bound
For a given classnode, fills in the supplied map with the parameterized types it defines.
node
- the class node to checkmap
- the generics type information collectorInterface 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