Package org.codehaus.groovy.ast.tools
Class GenericsUtils
- java.lang.Object
-
- org.codehaus.groovy.ast.tools.GenericsUtils
-
public class GenericsUtils extends Object
Utility methods to deal with generic types.
-
-
Field Summary
Fields Modifier and Type Field Description static GenericsType[]
EMPTY_GENERICS_ARRAY
static String
JAVA_LANG_OBJECT
-
Constructor Summary
Constructors Constructor Description GenericsUtils()
-
Method Summary
-
-
-
Field Detail
-
EMPTY_GENERICS_ARRAY
public static final GenericsType[] EMPTY_GENERICS_ARRAY
-
JAVA_LANG_OBJECT
public static final String JAVA_LANG_OBJECT
- See Also:
- Constant Field Values
-
-
Method Detail
-
alignGenericTypes
@Deprecated public static GenericsType[] alignGenericTypes(GenericsType[] redirectGenericTypes, GenericsType[] parameterizedTypes, GenericsType[] alignmentTarget)
Deprecated.You shouldn't call this method because it is inherently unreliableGiven 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>
- Parameters:
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 to- Returns:
- aligned type arguments
-
buildWildcardType
public static GenericsType buildWildcardType(ClassNode... types)
Generates a wildcard generic type in order to be used for checks against class nodes. SeeGenericsType.isCompatibleWith(org.codehaus.groovy.ast.ClassNode)
.- Parameters:
types
- the type to be used as the wildcard upper bound- Returns:
- a wildcard generics type
-
extractPlaceholders
public static Map<String,GenericsType> extractPlaceholders(ClassNode cn)
-
extractPlaceholders
public static void extractPlaceholders(ClassNode node, Map<String,GenericsType> map)
For a given classnode, fills in the supplied map with the parameterized types it defines.- Parameters:
node
-map
-
-
parameterizeInterfaceGenerics
@Deprecated public static ClassNode parameterizeInterfaceGenerics(ClassNode hint, ClassNode target)
Deprecated.Use #parameterizeType insteadInterface class nodes retrieved fromClassNode.getInterfaces()
orClassNode.getAllInterfaces()
are returned with generic type arguments. This method allows returning a parameterized interface given the parameterized class node which implements this interface.- Parameters:
hint
- the class node where generics types are parameterizedtarget
- the interface we want to parameterize generics types- Returns:
- a parameterized interface class node
-
parameterizeType
public static ClassNode parameterizeType(ClassNode hint, ClassNode target)
Interface class nodes retrieved fromClassNode.getInterfaces()
orClassNode.getAllInterfaces()
are returned with generic type arguments. This method allows returning a parameterized interface given the parameterized class node which implements this interface.- Parameters:
hint
- the class node where generics types are parameterizedtarget
- the interface we want to parameterize generics types- Returns:
- a parameterized interface class node
-
makeClassSafeWithGenerics
public static ClassNode makeClassSafeWithGenerics(Class klass, ClassNode genericsType)
-
makeClassSafe0
public static ClassNode makeClassSafe0(ClassNode type, GenericsType... genericTypes)
-
makeClassSafeWithGenerics
public static ClassNode makeClassSafeWithGenerics(ClassNode type, GenericsType... genericTypes)
-
correctToGenericsSpec
public static MethodNode correctToGenericsSpec(Map<String,ClassNode> genericsSpec, MethodNode mn)
-
correctToGenericsSpecRecurse
public static ClassNode correctToGenericsSpecRecurse(Map<String,ClassNode> genericsSpec, ClassNode type)
-
correctToGenericsSpecRecurse
public static ClassNode[] correctToGenericsSpecRecurse(Map<String,ClassNode> genericsSpec, ClassNode[] types)
- Since:
- 2.4.1
-
correctToGenericsSpecRecurse
public static ClassNode correctToGenericsSpecRecurse(Map<String,ClassNode> genericsSpec, ClassNode type, List<String> exclusions)
-
correctToGenericsSpec
public static ClassNode correctToGenericsSpec(Map<String,ClassNode> genericsSpec, GenericsType type)
-
correctToGenericsSpec
public static ClassNode correctToGenericsSpec(Map<String,ClassNode> genericsSpec, ClassNode type)
-
createGenericsSpec
public static Map<String,ClassNode> createGenericsSpec(ClassNode current, Map<String,ClassNode> oldSpec)
-
addMethodGenerics
public static Map<String,ClassNode> addMethodGenerics(MethodNode current, Map<String,ClassNode> oldSpec)
-
extractSuperClassGenerics
public static void extractSuperClassGenerics(ClassNode type, ClassNode target, Map<String,ClassNode> spec)
-
parseClassNodesFromString
public static ClassNode[] parseClassNodesFromString(String option, SourceUnit sourceUnit, CompilationUnit compilationUnit, MethodNode mn, ASTNode usage)
-
applyGenericsContextToPlaceHolders
public static GenericsType[] applyGenericsContextToPlaceHolders(Map<String,ClassNode> genericsSpec, GenericsType[] oldPlaceHolders)
transforms 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.- Parameters:
genericsSpec
- the generics context information specoldPlaceHolders
- the old placeholders- Returns:
- the new generics types
-
-