# Class Method

java.lang.Object
org.apache.bcel.classfile.AccessFlags
org.apache.bcel.classfile.FieldOrMethod
org.apache.bcel.classfile.Method

All Implemented Interfaces:
  `Cloneable, Node`

public final class Method extends FieldOrMethod
This class represents the method info structure, i.e., the representation for a method in the class. See JVM specification for details. A method has access flags, a name, a signature and a number of attributes.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final Method[]`
  `EMPTY_ARRAY`
  Empty array constant.

  ### Fields inherited from class FieldOrMethod

  `attributes, attributes_count, constant_pool, name_index, signature_index`

  ### Fields inherited from class AccessFlags

  `access_flags`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Method()`
  Empty constructor, all attributes have to be defined via 'setXXX' methods.
  `Method(int accessFlags, int nameIndex, int signatureIndex, Attribute[] attributes, ConstantPool constantPool)`
  `Method(Method c)`
  Initialize from another object.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `accept(Visitor v)`
  Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class.
  `Method`
  `copy(ConstantPool constantPool)`
  `boolean`
  `equals(Object obj)`
  Return value as defined by given BCELComparator strategy.
  `Type[]`
  `getArgumentTypes()`
  `Code`
  `getCode()`
  `static BCELComparator<Method>`
  `getComparator()`
  `ExceptionTable`
  `getExceptionTable()`
  `LineNumberTable`
  `getLineNumberTable()`
  `LocalVariableTable`
  `getLocalVariableTable()`
  `LocalVariableTypeTable`
  `getLocalVariableTypeTable()`
  Gets the local variable type table attribute `LocalVariableTypeTable`.
  `ParameterAnnotationEntry[]`
  `getParameterAnnotationEntries()`
  `Type`
  `getReturnType()`
  `int`
  `hashCode()`
  Return value as defined by given BCELComparator strategy.
  `static void`
  `setComparator(BCELComparator<Method> comparator)`
  `String`
  `toString()`
  Return string representation close to declaration format, 'public static void main(String[] args) throws IOException', for example.

  ### Methods inherited from class FieldOrMethod

  `copy_, dump, getAnnotationEntries, getAttribute, getAttributes, getConstantPool, getGenericSignature, getName, getNameIndex, getSignature, getSignatureIndex, setAttributes, setConstantPool, setNameIndex, setSignatureIndex`

  ### Methods inherited from class AccessFlags

  `getAccessFlags, getModifiers, isAbstract, isAbstract, isAnnotation, isAnnotation, isEnum, isEnum, isFinal, isFinal, isInterface, isInterface, isNative, isNative, isPrivate, isPrivate, isProtected, isProtected, isPublic, isPublic, isStatic, isStatic, isStrictfp, isStrictfp, isSynchronized, isSynchronized, isSynthetic, isSynthetic, isTransient, isTransient, isVarArgs, isVarArgs, isVolatile, isVolatile, setAccessFlags, setModifiers`

  ### Methods inherited from class Object

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

- ## Field Details

  - ### EMPTY_ARRAY

    public static final Method[] EMPTY_ARRAY
    Empty array constant.
    Since:
      6.6.0

- ## Constructor Details

  - ### Method

    public Method()
    Empty constructor, all attributes have to be defined via 'setXXX' methods. Use at your own risk.

  - ### Method

    public Method(int accessFlags, int nameIndex, int signatureIndex, Attribute[] attributes, ConstantPool constantPool)
    Parameters:
      `accessFlags` - Access rights of method
      `nameIndex` - Points to field name in constant pool
      `signatureIndex` - Points to encoded signature
      `attributes` - Collection of attributes
      `constantPool` - Array of constants

  - ### Method

    public Method(Method c)
    Initialize from another object. Note that both objects use the same references (shallow copy). Use clone() for a physical copy.
    Parameters:
      `c` - Source to copy.

- ## Method Details

  - ### getComparator

    public static BCELComparator<Method> getComparator()
    Returns:
      Comparison strategy object.

  - ### setComparator

    public static void setComparator(BCELComparator<Method> comparator)
    Parameters:
      `comparator` - Comparison strategy object.

  - ### accept

    public void accept(Visitor v)
    Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects.
    Parameters:
      `v` - Visitor object

  - ### copy

    public Method copy(ConstantPool constantPool)
    Returns:
      deep copy of this method

  - ### equals

    public boolean equals(Object obj)
    Return value as defined by given BCELComparator strategy. By default two method objects are said to be equal when their names and signatures are equal.
    Overrides:
      `equals` in class `Object`
    See Also:
      - `Object.equals(Object)`

  - ### getArgumentTypes

    public Type[] getArgumentTypes()
    Returns:
      array of method argument types

  - ### getCode

    public Code getCode()
    Returns:
      Code attribute of method, if any

  - ### getExceptionTable

    public ExceptionTable getExceptionTable()
    Returns:
      ExceptionTable attribute of method, if any, i.e., list all exceptions the method may throw not exception handlers!

  - ### getLineNumberTable

    public LineNumberTable getLineNumberTable()
    Returns:
      LineNumberTable of code attribute if any, i.e. the call is forwarded to the Code atribute.

  - ### getLocalVariableTable

    public LocalVariableTable getLocalVariableTable()
    Returns:
      LocalVariableTable of code attribute if any, i.e. the call is forwarded to the Code attribute.

  - ### getLocalVariableTypeTable

    public LocalVariableTypeTable getLocalVariableTypeTable()
    Gets the local variable type table attribute `LocalVariableTypeTable`.
    Returns:
      LocalVariableTypeTable of code attribute if any, i.e. the call is forwarded to the Code attribute.
    Since:
      6.10.0

  - ### getParameterAnnotationEntries

    public ParameterAnnotationEntry[] getParameterAnnotationEntries()
    Returns:
      Annotations on the parameters of a method
    Since:
      6.0

  - ### getReturnType

    public Type getReturnType()
    Returns:
      return type of method

  - ### hashCode

    public int hashCode()
    Return value as defined by given BCELComparator strategy. By default return the hash code of the method's name XOR signature.
    Overrides:
      `hashCode` in class `Object`
    See Also:
      - `Object.hashCode()`

  - ### toString

    public String toString()
    Return string representation close to declaration format, 'public static void main(String[] args) throws IOException', for example.
    Overrides:
      `toString` in class `Object`
    Returns:
      String representation of the method.