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, V9`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    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 Detail

    - #### MethodNode

          protected MethodNode()

    - #### MethodNode

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

  - ### Method Detail

    - #### 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`