public class GenericsType
extends ASTNode
Represents generic type information for parameterized types in Groovy/Java, including type variables, wildcard types, and type bounds. Supports placeholders for type parameters, wildcards with upper/lower bounds, and tracks resolution state for multi-phase compilation. Provides compatibility checking for generic type constraints.
| Modifiers | Name | Description |
|---|---|---|
static class |
GenericsType.GenericsTypeName |
Represents the name of a GenericsType for use as a map key or in generic type comparisons. |
| Modifiers | Name | Description |
|---|---|---|
static GenericsType[] |
EMPTY_ARRAY |
| Constructor and description |
|---|
GenericsType(ClassNode type, ClassNode[] upperBounds, ClassNode lowerBound)Creates a generics type with optional upper and lower bounds. |
GenericsType(ClassNode basicType)Creates a simple generics type with no bounds for a concrete type. |
| Type Params | Return Type | Name and description |
|---|---|---|
|
public ClassNode |
getLowerBound()Returns the lower bound for this wildcard type (e.g., Bound in "? |
|
public String |
getName()Returns the name of this generic type. |
|
public ClassNode |
getType()Returns the underlying ClassNode for this generic type. |
|
public ClassNode[] |
getUpperBounds()Returns the upper bounds for this wildcard or placeholder type (e.g., Bound in {@code ? |
|
public boolean |
isCompatibleWith(ClassNode classNode)Determines if the provided type is compatible with this generic type specification. |
|
public boolean |
isPlaceholder()Returns true if this generic type represents a type variable placeholder (e.g., T in <T>). |
|
public boolean |
isResolved()Returns true if this generic type has been resolved during compilation phases. |
|
public boolean |
isWildcard()Returns true if this generic type represents a wildcard (e.g., ? |
|
public void |
setName(String name)Sets the name of this generic type. |
|
public void |
setPlaceholder(boolean placeholder)Marks this generic type as a placeholder type variable. |
|
public void |
setResolved(boolean resolved)Marks this generic type as resolved. |
|
public void |
setType(ClassNode type)Sets the underlying ClassNode for this generic type. |
|
public void |
setWildcard(boolean wildcard)Marks this generic type as a wildcard. |
|
public String |
toString() |
| Methods inherited from class | Name |
|---|---|
class ASTNode |
copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getMetaDataMap, getText, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setMetaDataMap, setSourcePosition, visit |
Creates a generics type with optional upper and lower bounds. The type is marked as a placeholder if the provided type is a generics placeholder.
Returns the lower bound for this wildcard type (e.g., Bound in "? super Bound"), or null if this is not a lower-bounded wildcard.
Returns the name of this generic type. For wildcard types, returns "?"; otherwise returns the type name.
Returns the upper bounds for this wildcard or placeholder type
(e.g., Bound in ? extends Bound or
Bound1 & Bound2 in T extends Bound1 & Bound2),
or null if this type has no upper bounds.
Determines if the provided type is compatible with this generic type specification. The check is complete and recursive, including nested generic parameters. Accounts for wildcards, placeholders, bounds, and generic type covariance rules.
classNode - the ClassNode to check for compatibilityReturns true if this generic type represents a type variable placeholder (e.g., T in <T>).
Returns true if this generic type has been resolved during compilation phases.
Returns true if this generic type represents a wildcard (e.g., ? or ? extends/super Bound).
Sets the name of this generic type.
name - the type name (never null)Marks this generic type as a placeholder type variable. Setting to true also sets resolved=true and clears the wildcard flag, since placeholders and wildcards are mutually exclusive.
placeholder - true to mark as a placeholderMarks this generic type as resolved. Setting to true also implicitly sets resolved=true.
resolved - true to mark as resolvedSets the underlying ClassNode for this generic type.
type - the ClassNode to set (never null)Marks this generic type as a wildcard. Clears the placeholder flag if set, since wildcards and placeholders are mutually exclusive.
wildcard - true to mark as a wildcardCopyright © 2003-2026 The Apache Software Foundation. All rights reserved.