Package org.codehaus.groovy.ast

# Class MethodNode

java.lang.Object
org.codehaus.groovy.ast.ASTNode
org.codehaus.groovy.ast.AnnotatedNode
org.codehaus.groovy.ast.MethodNode

All Implemented Interfaces:
  `GroovydocHolder<AnnotatedNode>`, `NodeMetaDataHandler`, `org.objectweb.asm.Opcodes`

Direct Known Subclasses:
  `ConstructorNode`, `ExtensionMethodNode`

    public class MethodNode
    extends AnnotatedNode
    implements org.objectweb.asm.Opcodes

Represents a method declaration.

- ## Field Summary

  ### Fields inherited from interface groovy.lang.groovydoc.GroovydocHolder

  `DOC_COMMENT`

  ### Fields inherited from interface org.objectweb.asm.Opcodes

  `AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V9`

- ## Constructor Summary

  Constructors
  Modifier | Constructor | Description
  --- | --- | ---
  `protected` | `MethodNode()` |
  `` | `MethodNode​(String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code)` |

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `Statement` | `getCode()` |
  `ClassNode[]` | `getExceptions()` |
  `Statement` | `getFirstStatement()` |
  `GenericsType[]` | `getGenericsTypes()` |
  `int` | `getModifiers()` |
  `String` | `getName()` |
  `Parameter[]` | `getParameters()` |
  `ClassNode` | `getReturnType()` |
  `String` | `getText()` | Provides a nicely formatted string of the method definition.
  `String` | `getTypeDescriptor()` | The type descriptor for a method node is a string containing the name of the method, its return type, and its parameter types in a canonical form.
  `VariableScope` | `getVariableScope()` |
  `boolean` | `hasAnnotationDefault()` |
  `boolean` | `hasDefaultValue()` |
  `boolean` | `isAbstract()` |
  `boolean` | `isDefault()` |
  `boolean` | `isDynamicReturnType()` |
  `boolean` | `isFinal()` |
  `boolean` | `isPackageScope()` |
  `boolean` | `isPrivate()` |
  `boolean` | `isProtected()` |
  `boolean` | `isPublic()` |
  `boolean` | `isScriptBody()` |
  `boolean` | `isStatic()` |
  `boolean` | `isStaticConstructor()` |
  `boolean` | `isSyntheticPublic()` | Indicates that this method has been "promoted" to public by Groovy when in fact there was no public modifier explicitly in the source code.
  `boolean` | `isVoidMethod()` |
  `void` | `setAnnotationDefault​(boolean hasDefaultValue)` |
  `void` | `setCode​(Statement code)` |
  `void` | `setGenericsTypes​(GenericsType[] genericsTypes)` |
  `void` | `setIsScriptBody()` | Sets the flag for this method to indicate it is a script body implementation.
  `void` | `setModifiers​(int modifiers)` |
  `void` | `setParameters​(Parameter[] parameters)` |
  `void` | `setReturnType​(ClassNode returnType)` |
  `void` | `setSyntheticPublic​(boolean syntheticPublic)` |
  `void` | `setVariableScope​(VariableScope variableScope)` |
  `String` | `toString()` |

  ### Methods inherited from class org.codehaus.groovy.ast.AnnotatedNode

  `addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, getGroovydoc, getInstance, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSynthetic`

  ### Methods inherited from class org.codehaus.groovy.ast.ASTNode

  `copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getMetaDataMap, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setMetaDataMap, setSourcePosition, visit`

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

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

  ### Methods inherited from interface org.codehaus.groovy.ast.NodeMetaDataHandler

  `copyNodeMetaData, getNodeMetaData, getNodeMetaData, getNodeMetaData, putNodeMetaData, removeNodeMetaData, setNodeMetaData`

- ## Constructor Details

  - ### MethodNode

    protected MethodNode()

  - ### MethodNode

    public MethodNode​(String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code)

- ## Method Details

  - ### getTypeDescriptor

    public String getTypeDescriptor()
    The type descriptor for a method node is a string containing the name of the method, its return type, and its parameter types in a canonical form. For simplicity, we use the format of a Java declaration without parameter names or generics.

  - ### getCode

    public Statement getCode()

  - ### setCode

    public void setCode​(Statement code)

  - ### getModifiers

    public int getModifiers()

  - ### setModifiers

    public void setModifiers​(int modifiers)

  - ### getName

    public String getName()

  - ### getParameters

    public Parameter[] getParameters()

  - ### setParameters

    public void setParameters​(Parameter[] parameters)

  - ### hasDefaultValue

    public boolean hasDefaultValue()
    Returns:
      `true` if any parameter has a default value

  - ### getReturnType

    public ClassNode getReturnType()

  - ### setReturnType

    public void setReturnType​(ClassNode returnType)

  - ### isDynamicReturnType

    public boolean isDynamicReturnType()

  - ### isVoidMethod

    public boolean isVoidMethod()

  - ### getVariableScope

    public VariableScope getVariableScope()

  - ### setVariableScope

    public void setVariableScope​(VariableScope variableScope)

  - ### isAbstract

    public boolean isAbstract()

  - ### isDefault

    public boolean isDefault()

  - ### isFinal

    public boolean isFinal()

  - ### isStatic

    public boolean isStatic()

  - ### isPublic

    public boolean isPublic()

  - ### isPrivate

    public boolean isPrivate()

  - ### isProtected

    public boolean isProtected()

  - ### isPackageScope

    public boolean isPackageScope()

  - ### getExceptions

    public ClassNode[] getExceptions()

  - ### getFirstStatement

    public Statement getFirstStatement()

  - ### getGenericsTypes

    public GenericsType[] getGenericsTypes()

  - ### setGenericsTypes

    public void setGenericsTypes​(GenericsType[] genericsTypes)

  - ### hasAnnotationDefault

    public boolean hasAnnotationDefault()
    Returns:
      `true` if annotation method has a default value

  - ### setAnnotationDefault

    public void setAnnotationDefault​(boolean hasDefaultValue)

  - ### isScriptBody

    public boolean isScriptBody()
    Returns:
      `true` if this method is the run method from a script

  - ### setIsScriptBody

    public void setIsScriptBody()
    Sets the flag for this method to indicate it is a script body implementation.
    See Also:
      `ModuleNode.createStatementsClass()`

  - ### isStaticConstructor

    public boolean isStaticConstructor()

  - ### isSyntheticPublic

    public boolean isSyntheticPublic()
    Indicates that this method has been "promoted" to public by Groovy when in fact there was no public modifier explicitly in the source code. I.e. it remembers that it has applied Groovy's "public methods by default" rule. This property is typically only of interest to AST transform writers.
    Returns:
      `true` if this class is public but had no explicit public modifier

  - ### setSyntheticPublic

    public void setSyntheticPublic​(boolean syntheticPublic)

  - ### getText

    public String getText()
    Provides a nicely formatted string of the method definition. For simplicity, generic types on some of the elements are not displayed.
    Overrides:
      `getText` in class `ASTNode`
    Returns:
      string form of node with some generic elements suppressed

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`