TechTrader Bytecode Toolkit

com.techtrader.modules.tools.bytecode
Class BCMethod

java.lang.Object
  |
  +--com.techtrader.modules.tools.bytecode.BCEntity
        |
        +--com.techtrader.modules.tools.bytecode.BCMethod

public class BCMethod
extends BCEntity
implements Constants

Representation of a bytecode method of a class; a BCMethod can only be obtained from a BCClass. Note that this class has method to manipulate its declared excptions and code for convenience only; they can be manipulated directly through the ATTR_EXCEPTIONS and ATTR_CODE attributes.

Author:
Abe White

Fields inherited from interface com.techtrader.modules.tools.bytecode.Constants
AALOAD, AASTORE, ACCESS_ABSTRACT, ACCESS_FINAL, ACCESS_INTERFACE, ACCESS_NATIVE, ACCESS_PRIVATE, ACCESS_PROTECTED, ACCESS_PUBLIC, ACCESS_STATIC, ACCESS_STRICT, ACCESS_SUPER, ACCESS_SYNCHRONIZED, ACCESS_TRANSIENT, ACCESS_VOLATILE, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ARETURN, ARRAY_BOOLEAN, ARRAY_BYTE, ARRAY_CHAR, ARRAY_DOUBLE, ARRAY_FLOAT, ARRAY_INT, ARRAY_LONG, ARRAY_SHORT, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_CODE, ATTR_CONST, ATTR_DEPRECATED, ATTR_EXCEPTIONS, ATTR_INNERCLASS, ATTR_LINENUMBERS, ATTR_LOCALS, ATTR_SOURCE, ATTR_SYNTHETIC, ATTR_UNKNOWN, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETSTATIC, GOTO, GOTO_W, 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_EQ, IF_GE, IF_GT, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IF_LE, IF_LT, IF_NE, IF_NONNULL, IF_NULL, IINC, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMUL, INEG, INSTANCEOF, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, IUSHR, IXOR, JSR, JSR_W, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_W, LDC2_W, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MATH_ADD, MATH_AND, MATH_DIV, MATH_MUL, MATH_NEG, MATH_OR, MATH_REM, MATH_SHL, MATH_SHR, MATH_SUB, MATH_USHR, MATH_XOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, OPCODE_NAMES, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, TABLESWITCH, VALID_MAGIC, WIDE
 
Constructor Summary
protected BCMethod(BCClass owner)
          Protected constructor.
 
Method Summary
 void acceptVisit(BCVisitor visit)
          Accept a visit from a BCVisitor, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this object.
 Code addCode()
          Add a code block to this method; replaces the old block if it exists.
 void addExceptionType(Class type)
          Add an exception to those declared by this method.
 void addExceptionTypeName(String name)
          Add an exception to those declared by this method.
 void addParamType(Class type)
          Add a parameter type to this method.
 void addParamTypeName(String name)
          Add a parameter type to this method.
 void clearExceptionTypes()
          Remove all declared exceptions from this method.
 int getAccessFlags()
          Return the access flags for this class as a bit array of ACCESS_XXX constants.
 Code getCode()
          Get the code for this method; returns null if none.
 int getDescriptorIndex()
          Get the index in the constant pool of the UTF entry holding the descriptor of this method.
 String[] getExceptionTypeNames()
          Get the exception types thrown by this method.
 Class[] getExceptionTypes()
          Get the exception types thrown by this method.
 String getName()
          Get the name of this method.
 int getNameIndex()
          Get the index in the constant pool of the UTF entry holding the name of this method.
 BCClass getOwner()
          Get the BCClass that owns this method.
 String[] getParamTypeNames()
          Get the names of all the parameter types for this method.
 Class[] getParamTypes()
          Get the types of parameters this method takes.
 ConstantPool getPool()
          Get the class constant pool; this method delegates to the owning class.
 Class getReturnType()
          Get the Class of the return type of this method.
 String getReturnTypeName()
          Get the name of the class type returned by this method.
 Code importCode(Code code)
          Import a code block from another method.
protected  void invalidate()
          Used when this field is deleted from its class.
 boolean isAbstract()
          Manipulate the method access flags.
 boolean isFinal()
          Manipulate the method access flags.
 boolean isNative()
          Manipulate the method access flags.
 boolean isPackage()
          Manipulate the method access flags.
 boolean isPrivate()
          Manipulate the method access flags.
 boolean isProtected()
          Manipulate the method access flags.
 boolean isPublic()
          Manipulate the method access flags.
 boolean isStatic()
          Manipulate the method access flags.
 boolean isStrict()
          Manipulate the method access flags.
 boolean isSynchronized()
          Manipulate the method access flags.
 void makePackage()
          Manipulate the method access flags.
 void makePrivate()
          Manipulate the method access flags.
 void makeProtected()
          Manipulate the method access flags.
 void makePublic()
          Manipulate the method access flags.
protected  void readData(DataInput in)
           
 boolean removeCode()
          Remove the code from this method; note that this actually removes the Code attribute completely; if you want to make an empty code block use the Code.clear() method.
 boolean removeExceptionType(Class type)
          Remove the given exception type from those that this method declares in its throws clause.
 boolean removeExceptionTypeName(String name)
          Remove the given exception type from those that this method declares in its throws clause.
 boolean removeParamType(Class type)
          Remove a parameter from this method.
 boolean removeParamTypeName(String name)
          Remove a parameter from this method.
 void setAbstract(boolean on)
          Manipulate the method access flags.
 void setAccessFlags(int access)
          Set the access flags for this class as a bit array of ACCESS_XXX constants.
 void setDescriptor(Class returnType, Class[] paramTypes)
          Set this method descriptor; using this method is much more efficient than setting the return type and param types separately.
 void setDescriptor(String returnType, String[] paramTypes)
          Set this method descriptor; using this method is much more efficient than setting the return type and param types separately.
 void setDescriptorIndex(int index)
          Set the index in the constant pool of the UTF entry holding the descriptor of this method.
 void setExceptionTypeNames(String[] types)
          Set the exception types for this method.
 void setExceptionTypes(Class[] types)
          Set the exception types for this method.
 void setFinal(boolean on)
          Manipulate the method access flags.
 void setName(String name)
          Set the name of this method.
 void setNameIndex(int index)
          Set the index in the constant pool of the UTF entry holding the name of this method.
 void setNative(boolean on)
          Manipulate the method access flags.
 void setParamTypeNames(String[] names)
          Set the parameter types of this method.
 void setParamTypes(Class[] types)
          Set the parameter type of this method.
 void setReturnType(Class type)
          Set the return type of this method.
 void setReturnTypeName(String name)
          Set the return type of this method.
 void setStatic(boolean on)
          Manipulate the method access flags.
 void setStrict(boolean on)
          Manipulate the method access flags.
 void setSynchronized(boolean on)
          Manipulate the method access flags.
protected  void writeData(DataOutput out)
           
 
Methods inherited from class com.techtrader.modules.tools.bytecode.BCEntity
addAttribute, clearAttributes, getAttribute, getAttributes, getAttributes, importAttribute, importAttributes, readAttributes, removeAttribute, removeAttribute, visitAttributes, writeAttributes
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BCMethod

protected BCMethod(BCClass owner)
Protected constructor.
Method Detail

invalidate

protected void invalidate()
Used when this field is deleted from its class.

getOwner

public BCClass getOwner()
Get the BCClass that owns this method.

getAccessFlags

public int getAccessFlags()
Return the access flags for this class as a bit array of ACCESS_XXX constants. This can be used to transfer access flags between methods without getting/setting each possible access flag.

setAccessFlags

public void setAccessFlags(int access)
Set the access flags for this class as a bit array of ACCESS_XXX constants. This can be used to transfer access flags between methods without getting/setting each possible access flag.

isPublic

public boolean isPublic()
Manipulate the method access flags.

makePublic

public void makePublic()
Manipulate the method access flags.

isProtected

public boolean isProtected()
Manipulate the method access flags.

makeProtected

public void makeProtected()
Manipulate the method access flags.

isPrivate

public boolean isPrivate()
Manipulate the method access flags.

makePrivate

public void makePrivate()
Manipulate the method access flags.

isPackage

public boolean isPackage()
Manipulate the method access flags.

makePackage

public void makePackage()
Manipulate the method access flags.

isFinal

public boolean isFinal()
Manipulate the method access flags.

setFinal

public void setFinal(boolean on)
Manipulate the method access flags.

isStatic

public boolean isStatic()
Manipulate the method access flags.

setStatic

public void setStatic(boolean on)
Manipulate the method access flags.

isSynchronized

public boolean isSynchronized()
Manipulate the method access flags.

setSynchronized

public void setSynchronized(boolean on)
Manipulate the method access flags.

isNative

public boolean isNative()
Manipulate the method access flags.

setNative

public void setNative(boolean on)
Manipulate the method access flags.

isAbstract

public boolean isAbstract()
Manipulate the method access flags.

setAbstract

public void setAbstract(boolean on)
Manipulate the method access flags.

isStrict

public boolean isStrict()
Manipulate the method access flags.

setStrict

public void setStrict(boolean on)
Manipulate the method access flags.

getNameIndex

public int getNameIndex()
Get the index in the constant pool of the UTF entry holding the name of this method.

setNameIndex

public void setNameIndex(int index)
Set the index in the constant pool of the UTF entry holding the name of this method.

getDescriptorIndex

public int getDescriptorIndex()
Get the index in the constant pool of the UTF entry holding the descriptor of this method.

setDescriptorIndex

public void setDescriptorIndex(int index)
Set the index in the constant pool of the UTF entry holding the descriptor of this method.

getName

public String getName()
Get the name of this method.

setName

public void setName(String name)
Set the name of this method.

getReturnTypeName

public String getReturnTypeName()
Get the name of the class type returned by this method.

getReturnType

public Class getReturnType()
                    throws ClassNotFoundException
Get the Class of the return type of this method.

getParamTypeNames

public String[] getParamTypeNames()
Get the names of all the parameter types for this method.

getParamTypes

public Class[] getParamTypes()
                      throws ClassNotFoundException
Get the types of parameters this method takes.

setReturnTypeName

public void setReturnTypeName(String name)
Set the return type of this method.

setReturnType

public void setReturnType(Class type)
Set the return type of this method.

setParamTypeNames

public void setParamTypeNames(String[] names)
Set the parameter types of this method.

setParamTypes

public void setParamTypes(Class[] types)
Set the parameter type of this method.

addParamTypeName

public void addParamTypeName(String name)
Add a parameter type to this method.

removeParamTypeName

public boolean removeParamTypeName(String name)
Remove a parameter from this method.

removeParamType

public boolean removeParamType(Class type)
Remove a parameter from this method.

addParamType

public void addParamType(Class type)
Add a parameter type to this method.

setDescriptor

public void setDescriptor(String returnType,
                          String[] paramTypes)
Set this method descriptor; using this method is much more efficient than setting the return type and param types separately.

setDescriptor

public void setDescriptor(Class returnType,
                          Class[] paramTypes)
Set this method descriptor; using this method is much more efficient than setting the return type and param types separately.

getExceptionTypeNames

public String[] getExceptionTypeNames()
Get the exception types thrown by this method.

getExceptionTypes

public Class[] getExceptionTypes()
                          throws ClassNotFoundException
Get the exception types thrown by this method.

clearExceptionTypes

public void clearExceptionTypes()
Remove all declared exceptions from this method.

removeExceptionTypeName

public boolean removeExceptionTypeName(String name)
Remove the given exception type from those that this method declares in its throws clause.

removeExceptionType

public boolean removeExceptionType(Class type)
Remove the given exception type from those that this method declares in its throws clause.

setExceptionTypeNames

public void setExceptionTypeNames(String[] types)
Set the exception types for this method.

setExceptionTypes

public void setExceptionTypes(Class[] types)
Set the exception types for this method.

addExceptionTypeName

public void addExceptionTypeName(String name)
Add an exception to those declared by this method.

addExceptionType

public void addExceptionType(Class type)
Add an exception to those declared by this method.

getCode

public Code getCode()
Get the code for this method; returns null if none. Note that each time the code is fetched, the position of the code iterator is reset to before the first opcode.

addCode

public Code addCode()
Add a code block to this method; replaces the old block if it exists.

removeCode

public boolean removeCode()
Remove the code from this method; note that this actually removes the Code attribute completely; if you want to make an empty code block use the Code.clear() method.

importCode

public Code importCode(Code code)
Import a code block from another method. The given method can be of this class or a different one. This will cause the code of this method to become an exact duplicate of the given code block.

getPool

public ConstantPool getPool()
Get the class constant pool; this method delegates to the owning class.
Overrides:
getPool in class BCEntity

readData

protected void readData(DataInput in)
                 throws IOException

writeData

protected void writeData(DataOutput out)
                  throws IOException

acceptVisit

public void acceptVisit(BCVisitor visit)
Description copied from interface: VisitAcceptor
Accept a visit from a BCVisitor, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this object.

TechTrader Bytecode Toolkit