org.codehaus.groovy.ast.tools

## Class GenericsUtils

- java.lang.Object
- - org.codehaus.groovy.ast.tools.GenericsUtils

    public class GenericsUtils
    extends java.lang.Object

Utility methods to deal with generic types.

### Field Summary

Fields
`static GenericsType[]` `EMPTY_GENERICS_ARRAY`

### Constructor Summary

Constructors
Constructor and Description
`GenericsUtils()`

### Method Summary

Methods
`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 java.util.Map<java.lang.String,GenericsType>` `extractPlaceholders(ClassNode cn)`
`static void` `extractPlaceholders(ClassNode node, java.util.Map<java.lang.String,GenericsType> map)` For a given classnode, fills in the supplied map with the parameterized types it defines.
`static ClassNode` `parameterizeInterfaceGenerics(ClassNode classNode, ClassNode anInterface)` Interface class nodes retrieved from `ClassNode.getInterfaces()` or `ClassNode.getAllInterfaces()` are returned with generic type arguments.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### EMPTY_GENERICS_ARRAY

    public static final GenericsType[] EMPTY_GENERICS_ARRAY

### Constructor Detail

#### GenericsUtils

    public GenericsUtils()

### Method Detail

#### alignGenericTypes

    public static GenericsType[] alignGenericTypes(GenericsType[] redirectGenericTypes,
                                   GenericsType[] parameterizedTypes,
                                   GenericsType[] alignmentTarget)

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>

Parameters:
  `redirectGenericTypes` - the type arguments or the redirect class node
  `parameterizedTypes` - the actual type arguments used on this class node
  `alignmentTarget` - 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. See `GenericsType.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 java.util.Map<java.lang.String,GenericsType> extractPlaceholders(ClassNode cn)

#### extractPlaceholders

    public static void extractPlaceholders(ClassNode node,
                           java.util.Map<java.lang.String,GenericsType> map)

For a given classnode, fills in the supplied map with the parameterized types it defines.

Parameters:
  `node` -
  `map` -

#### parameterizeInterfaceGenerics

    public static ClassNode parameterizeInterfaceGenerics(ClassNode classNode,
                                          ClassNode anInterface)

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.

Parameters:
  `classNode` - the class node where generics types are parameterized
  `anInterface` - the interface we want to parameterize generics types
Returns:
  a parameterized interface class node