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:
  org.objectweb.asm.Opcodes

Direct Known Subclasses:
  ConstructorNode, ExtensionMethodNode

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

Represents a method declaration

Author:
  James Strachan, Hamlet D'Arcy

### Field Summary

Fields
`static java.lang.String` `SCRIPT_BODY_METHOD_KEY`

### 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_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, ASM4, ASM5, ASM6, ASM7, 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, V9`

### Constructor Summary

Constructors
Constructor and Description
`MethodNode(java.lang.String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code)`

### Method Summary

All Methods Instance Methods Concrete Methods
`Statement` `getCode()`
`ClassNode[]` `getExceptions()`
`Statement` `getFirstStatement()`
`GenericsType[]` `getGenericsTypes()`
`int` `getModifiers()`
`java.lang.String` `getName()`
`Parameter[]` `getParameters()`
`ClassNode` `getReturnType()`
`java.lang.String` `getText()` Provides a nicely formatted string of the method definition.
`java.lang.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` `isDynamicReturnType()`
`boolean` `isFinal()`
`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 b)`
`void` `setCode(Statement code)`
`void` `setGenericsTypes(GenericsType[] genericsTypes)`
`void` `setIsScriptBody()` Set the metadata flag for this method to indicate that 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)`
`java.lang.String` `toString()`

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

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

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

`copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getNodeMetaData, getNodeMetaData, putNodeMetaData, removeNodeMetaData, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setNodeMetaData, setSourcePosition, visit`

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

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

### Field Detail

#### SCRIPT_BODY_METHOD_KEY

    public static final java.lang.String SCRIPT_BODY_METHOD_KEY

See Also:
  Constant Field Values

### Constructor Detail

#### MethodNode

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

### Method Detail

#### getTypeDescriptor

    public java.lang.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, I'm using the format of a Java declaration without parameter names.

Returns:
  the type descriptor

#### isVoidMethod

    public boolean isVoidMethod()

#### getCode

    public Statement getCode()

#### setCode

    public void setCode(Statement code)

#### getModifiers

    public int getModifiers()

#### setModifiers

    public void setModifiers(int modifiers)

#### getName

    public java.lang.String getName()

#### getParameters

    public Parameter[] getParameters()

#### setParameters

    public void setParameters(Parameter[] parameters)

#### getReturnType

    public ClassNode getReturnType()

#### getVariableScope

    public VariableScope getVariableScope()

#### setVariableScope

    public void setVariableScope(VariableScope variableScope)

#### isDynamicReturnType

    public boolean isDynamicReturnType()

#### isAbstract

    public boolean isAbstract()

#### isStatic

    public boolean isStatic()

#### isPublic

    public boolean isPublic()

#### isPrivate

    public boolean isPrivate()

#### isFinal

    public boolean isFinal()

#### isProtected

    public boolean isProtected()

#### hasDefaultValue

    public boolean hasDefaultValue()

#### isScriptBody

    public boolean isScriptBody()

Returns:
  true if this method is the run method from a script

#### setIsScriptBody

    public void setIsScriptBody()

Set the metadata flag for this method to indicate that it is a script body implementation.

See Also:
  `createStatementsClass().`

#### toString

    public java.lang.String toString()

Overrides:
  `toString` in class `java.lang.Object`

#### setReturnType

    public void setReturnType(ClassNode returnType)

#### getExceptions

    public ClassNode[] getExceptions()

#### getFirstStatement

    public Statement getFirstStatement()

#### getGenericsTypes

    public GenericsType[] getGenericsTypes()

#### setGenericsTypes

    public void setGenericsTypes(GenericsType[] genericsTypes)

#### setAnnotationDefault

    public void setAnnotationDefault(boolean b)

#### hasAnnotationDefault

    public boolean hasAnnotationDefault()

#### 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 java.lang.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