public class GenericsUtils extends Object
Modifier and Type | Field and Description |
---|---|
static GenericsType[] |
EMPTY_GENERICS_ARRAY |
Constructor and Description |
---|
GenericsUtils() |
Modifier and Type | Method and Description |
---|---|
static GenericsType[] |
alignGenericTypes(GenericsType[] redirectGenericTypes,
GenericsType[] parameterizedTypes,
GenericsType[] alignmentTarget)
Deprecated.
You shouldn't call this method because it is inherently unreliable
|
static GenericsType |
buildWildcardType(ClassNode... types)
Generates a wildcard generic type in order to be used for checks against class nodes.
|
static ClassNode |
correctToGenericsSpec(Map<String,ClassNode> genericsSpec,
ClassNode type) |
static ClassNode |
correctToGenericsSpec(Map<String,ClassNode> genericsSpec,
GenericsType type) |
static MethodNode |
correctToGenericsSpec(Map<String,ClassNode> genericsSpec,
MethodNode mn) |
static ClassNode |
correctToGenericsSpecRecurse(Map<String,ClassNode> genericsSpec,
ClassNode type) |
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(ClassNode type,
GenericsType... genericTypes) |
static ClassNode |
newClass(ClassNode type) |
static ClassNode |
nonGeneric(ClassNode type) |
static ClassNode |
parameterizeInterfaceGenerics(ClassNode hint,
ClassNode target)
Deprecated.
Use #parameterizeType instead
|
static ClassNode |
parameterizeType(ClassNode hint,
ClassNode target)
Interface class nodes retrieved from
ClassNode.getInterfaces()
or ClassNode.getAllInterfaces() are returned with generic type
arguments. |
public static final GenericsType[] EMPTY_GENERICS_ARRAY
@Deprecated public static GenericsType[] alignGenericTypes(GenericsType[] redirectGenericTypes, GenericsType[] parameterizedTypes, GenericsType[] alignmentTarget)
<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 topublic static GenericsType buildWildcardType(ClassNode... types)
GenericsType.isCompatibleWith(org.codehaus.groovy.ast.ClassNode)
.types
- the type to be used as the wildcard upper boundpublic static Map<String,GenericsType> extractPlaceholders(ClassNode cn)
public static void extractPlaceholders(ClassNode node, Map<String,GenericsType> map)
node
- map
- public static ClassNode parameterizeInterfaceGenerics(ClassNode hint, ClassNode target)
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 typespublic static ClassNode parameterizeType(ClassNode hint, ClassNode target)
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 typespublic static ClassNode makeClassSafe0(ClassNode type, GenericsType... genericTypes)
public static ClassNode makeClassSafeWithGenerics(ClassNode type, GenericsType... genericTypes)
public static MethodNode correctToGenericsSpec(Map<String,ClassNode> genericsSpec, MethodNode mn)
public static ClassNode correctToGenericsSpecRecurse(Map<String,ClassNode> genericsSpec, ClassNode type)
public static ClassNode correctToGenericsSpec(Map<String,ClassNode> genericsSpec, GenericsType type)
public static ClassNode correctToGenericsSpec(Map<String,ClassNode> genericsSpec, ClassNode type)
public static Map<String,ClassNode> createGenericsSpec(ClassNode current, Map<String,ClassNode> oldSpec)