Package org.codehaus.groovy.ast.decompiled

# Class ClassStub

java.lang.Object
org.codehaus.groovy.ast.decompiled.ClassStub

public class ClassStub extends Object
Data container holding bytecode-extracted class metadata for efficient decompilation.

This class serves as an intermediary representation of class information extracted from compiled bytecode by `AsmDecompiler`. It holds raw class attributes (access modifiers, class names, signatures) and collections of method and field stubs that can be lazily reconstructed into full AST nodes by `DecompiledClassNode`.

ClassStub instances are not AST nodes themselves; they are data containers that facilitate lazy loading of class members. The actual `ClassNode` representation is created by `DecompiledClassNode`, which uses this stub to populate fields and methods on demand via `LazyFieldNode`, `LazyMethodNode`, and `LazyConstructorNode`.

Thread Safety: ClassStub instances are typically constructed once and then treated as immutable. They are safe for concurrent read access after initialization.

See Also:
  - `AsmDecompiler.parseClass(java.net.URL)`
  - `DecompiledClassNode(ClassStub, AsmReferenceResolver)`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ClassStub(String className, int accessModifiers, String signature, String superName, String[] interfaceNames)`
  Creates a ClassStub from bytecode class metadata.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<org.codehaus.groovy.ast.decompiled.AnnotationStub>`
  `getAnnotations()`
  `List<org.codehaus.groovy.ast.decompiled.TypeAnnotationStub>`
  `getTypeAnnotations()`

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

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

- ## Constructor Details

  - ### ClassStub

    public ClassStub(String className, int accessModifiers, String signature, String superName, String[] interfaceNames)
    Creates a ClassStub from bytecode class metadata.
    Parameters:
      `className` - the fully qualified class name (dot notation)
      `accessModifiers` - JVM access modifiers (ASM Opcodes flags)
      `signature` - generic type signature or `null`
      `superName` - internal superclass name (JVMS format) or `null`
      `interfaceNames` - internal interface names (JVMS format) or empty array

- ## Method Details

  - ### getAnnotations

    public List<org.codehaus.groovy.ast.decompiled.AnnotationStub> getAnnotations()

  - ### getTypeAnnotations

    public List<org.codehaus.groovy.ast.decompiled.TypeAnnotationStub> getTypeAnnotations()