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)
Given a parameterized type and a generic type information, aligns actual type parameters.
|
static GenericsType |
buildWildcardType(ClassNode... types)
Generates a wildcard generic type in order to be used for checks against class nodes.
|
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 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
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 types