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
    Modifier and Type | Field and Description
    --- | ---
    `static GenericsType[]` | `EMPTY_GENERICS_ARRAY`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `GenericsUtils()`

  - ### Method Summary

    Methods
    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 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 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.

    - ### 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 hint,
                                                ClassNode target)

      Deprecated. Use #parameterizeType instead
      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:
        `hint` - the class node where generics types are parameterized
        `target` - 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 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:
        `hint` - the class node where generics types are parameterized
        `target` - the interface we want to parameterize generics types
      Returns:
        a parameterized interface class node