Overview | Package | Class | Use | Tree | Deprecated | Index
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## javassist.bytecode
Class Bytecode

    java.lang.Object
      |
      +--javassist.bytecode.Bytecode

All Implemented Interfaces:
  Opcode

public class Bytecode
extends java.lang.Object
implements Opcode

A utility class for producing a bytecode sequence.

A `Bytecode` object is an unbounded array containing bytecode. For example,

    ConstPool cp = ...;    // constant pool table
     Bytecode b = new Bytecode(cp, 1, 0);
     b.addIconst(3);
     b.addReturn(CtClass.intType);
     CodeAttribute ca = b.toCodeAttribute();

This program produces a Code attribute including a bytecode sequence:

    iconst_3
     ireturn

See Also:
  `ConstPool`, `CodeAttribute`

Field Summary
`static CtClass` | `THIS` Represents the `CtClass` file using the constant pool table given to this `Bytecode` object.

Fields inherited from interface javassist.bytecode.Opcode
`AALOAD, AASTORE, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, 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_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, 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, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, STACK_GROW, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, WIDE`

Constructor Summary
`Bytecode(ConstPool cp, int stacksize, int localvars)` Constructs a `Bytecode` object with an empty bytecode sequence.

Method Summary
`void` | `add(int code)` Appends an 8bit value to the end of the bytecode sequence.
`void` | `addAload(int n)` Appends ALOAD or (WIDE) ALOAD_<n>
`void` | `addAnewarray(CtClass clazz, int length)` Appends ICONST and ANEWARRAY.
`void` | `addAnewarray(java.lang.String classname)` Appends ANEWARRAY.
`void` | `addAstore(int n)` Appends ASTORE or (WIDE) ASTORE_<n>
`void` | `addCheckcast(CtClass c)` Appends CHECKCAST.
`void` | `addCheckcast(java.lang.String classname)` Appends CHECKCAST.
`void` | `addDconst(double d)` Appends DCONST or DCONST_<n>
`void` | `addDload(int n)` Appends DLOAD or (WIDE) DLOAD_<n>
`void` | `addDstore(int n)` Appends DSTORE or (WIDE) DSTORE_<n>
`void` | `addExceptionHandler(int start, int end, int handler, CtClass type)` Adds a new entry of `exception_table`.
`void` | `addExceptionHandler(int start, int end, int handler, int type)` Adds a new entry of `exception_table`.
`void` | `addFconst(float f)` Appends FCONST or FCONST_<n>
`void` | `addFload(int n)` Appends FLOAD or (WIDE) FLOAD_<n>
`void` | `addFstore(int n)` Appends FSTORE or FSTORE_<n>
`void` | `addGetfield(CtClass c, java.lang.String name, java.lang.String type)` Appends GETFIELD.
`void` | `addGetstatic(CtClass c, java.lang.String name, java.lang.String type)` Appends GETSTATIC.
`void` | `addGetstatic(java.lang.String c, java.lang.String name, java.lang.String type)` Appends GETSTATIC.
`void` | `addIconst(int n)` Appends ICONST or ICONST_<n>
`void` | `addIload(int n)` Appends ILOAD or (WIDE) ILOAD_<n>
`void` | `addIndex(int index)` Appends a 16bit value to the end of the bytecode sequence.
`void` | `addInstanceof(java.lang.String classname)` Appends INSTANCEOF.
`void` | `addInvokeinterface(CtClass clazz, java.lang.String name, CtClass returnType, CtClass[] paramTypes, int count)` Appends INVOKEINTERFACE.
`void` | `addInvokeinterface(CtClass clazz, java.lang.String name, java.lang.String desc, int count)` Appends INVOKEINTERFACE.
`void` | `addInvokeinterface(int clazz, java.lang.String name, java.lang.String desc, int count)` Appends INVOKEINTERFACE.
`void` | `addInvokeinterface(java.lang.String classname, java.lang.String name, java.lang.String desc, int count)` Appends INVOKEINTERFACE.
`void` | `addInvokespecial(CtClass clazz, java.lang.String name, CtClass returnType, CtClass[] paramTypes)` Appends INVOKESPECIAL.
`void` | `addInvokespecial(CtClass clazz, java.lang.String name, java.lang.String desc)` Appends INVOKESPECIAL.
`void` | `addInvokespecial(int clazz, java.lang.String name, java.lang.String desc)` Appends INVOKESPECIAL.
`void` | `addInvokespecial(java.lang.String clazz, java.lang.String name, java.lang.String desc)` Appends INVOKESPECIAL.
`void` | `addInvokestatic(CtClass clazz, java.lang.String name, CtClass returnType, CtClass[] paramTypes)` Appends INVOKESTATIC.
`void` | `addInvokestatic(CtClass clazz, java.lang.String name, java.lang.String desc)` Appends INVOKESTATIC.
`void` | `addInvokestatic(int clazz, java.lang.String name, java.lang.String desc)` Appends INVOKESTATIC.
`void` | `addInvokestatic(java.lang.String classname, java.lang.String name, java.lang.String desc)` Appends INVOKESTATIC.
`void` | `addInvokevirtual(CtClass clazz, java.lang.String name, CtClass returnType, CtClass[] paramTypes)` Appends INVOKEVIRTUAL.
`void` | `addInvokevirtual(CtClass clazz, java.lang.String name, java.lang.String desc)` Appends INVOKEVIRTUAL.
`void` | `addInvokevirtual(int clazz, java.lang.String name, java.lang.String desc)` Appends INVOKEVIRTUAL.
`void` | `addInvokevirtual(java.lang.String classname, java.lang.String name, java.lang.String desc)` Appends INVOKEVIRTUAL.
`void` | `addIstore(int n)` Appends ISTORE or (WIDE) ISTORE_<n>
`void` | `addLconst(long n)` Appends LCONST or LCONST_<n>
`void` | `addLdc(int i)` Appends LDC or LDC_W.
`void` | `addLdc(java.lang.String s)` Appends LDC or LDC_W.
`void` | `addLdc2w(double d)` Appends LDC2_W.
`void` | `addLdc2w(long l)` Appends LDC2_W.
`void` | `addLload(int n)` Appends LLOAD or (WIDE) LLOAD_<n>
`int` | `addLoad(int n, CtClass type)` Appends an instruction for loading a value from the local variable at the index `n`.
`int` | `addLoadParameters(CtClass[] params, int offset)` Appends instructions for loading all the parameters onto the operand stack.
`void` | `addLstore(int n)` Appends LSTORE or LSTORE_<n>
`int` | `addMultiNewarray(CtClass clazz, int dim)` Appends MULTINEWARRAY.
`int` | `addMultiNewarray(CtClass clazz, int[] dimensions)` Appends MULTINEWARRAY.
`int` | `addMultiNewarray(java.lang.String desc, int dim)` Appends MULTINEWARRAY.
`void` | `addNew(CtClass clazz)` Appends NEW.
`void` | `addNew(java.lang.String classname)` Appends NEW.
`void` | `addNewarray(int atype, int length)` Appends NEWARRAY for primitive types.
`void` | `addOpcode(int code)` Appends an 8bit opcode to the end of the bytecode sequence.
`void` | `addPrintln(java.lang.String message)` Appends instructions for executing `java.lang.System.println(message)`.
`void` | `addPutfield(CtClass c, java.lang.String name, java.lang.String desc)` Appends PUTFIELD.
`void` | `addPutstatic(CtClass c, java.lang.String name, java.lang.String desc)` Appends PUTSTATIC.
`void` | `addRet(int var)` Appends RET.
`void` | `addReturn(CtClass type)` Appends ARETURN, IRETURN, .., or RETURN.
`int` | `addStore(int n, CtClass type)` Appends an instruction for storing a value into the local variable at the index `n`.
`int` | `currentPc()` Returns the length of bytecode sequence that have been added so far.
`byte[]` | `get()` Returns the produced bytecode sequence.
`ConstPool` | `getConstPool()` Gets a constant pool table.
`ExceptionTable` | `getExceptionTable()` Returns `exception_table`.
`int` | `getMaxLocals()` Gets `max_locals`.
`int` | `getMaxStack()` Gets `max_stack`.
`int` | `getStackDepth()` Returns the current stack depth.
`void` | `growStack(int diff)` Increases the current stack depth.
`void` | `incMaxLocals(int diff)` Increments `max_locals`.
`int` | `length()` Returns the length of the bytecode sequence.
`int` | `read(int offset)` Reads a signed 8bit value at the offset from the beginning of the bytecode sequence.
`int` | `read16bit(int offset)` Reads a signed 16bit value at the offset from the beginning of the bytecode sequence.
`void` | `setMaxLocals(boolean isStatic, CtClass[] params, int locals)` Sets `max_locals`.
`void` | `setMaxLocals(int size)` Sets `max_locals`.
`void` | `setMaxStack(int size)` Sets `max_stack`.
`void` | `setStackDepth(int depth)` Sets the current stack depth.
`CodeAttribute` | `toCodeAttribute()` Converts to a `CodeAttribute`.
`void` | `write(int offset, int value)` Writes an 8bit value at the offset from the beginning of the bytecode sequence.
`void` | `write16bit(int offset, int value)` Writes an 16bit value at the offset from the beginning of the bytecode sequence.

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### THIS

    public static final CtClass THIS

  Represents the `CtClass` file using the constant pool table given to this `Bytecode` object.

Constructor Detail

### Bytecode

    public Bytecode(ConstPool cp,
                    int stacksize,
                    int localvars)

  Constructs a `Bytecode` object with an empty bytecode sequence.

  The parameters `stacksize` and `localvars` specify initial values of `max_stack` and `max_locals`. They can be changed later.

Parameters:
  `cp` - constant pool table.
  `stacksize` - `max_stack`.
  `localvars` - `max_locals`.

Method Detail

### getConstPool

    public ConstPool getConstPool()

  Gets a constant pool table.

### getExceptionTable

    public ExceptionTable getExceptionTable()

  Returns `exception_table`.

### toCodeAttribute

    public CodeAttribute toCodeAttribute()

  Converts to a `CodeAttribute`.

### length

    public int length()

  Returns the length of the bytecode sequence.

### get

    public byte[] get()

  Returns the produced bytecode sequence.

### getMaxStack

    public int getMaxStack()

  Gets `max_stack`.

### setMaxStack

    public void setMaxStack(int size)

  Sets `max_stack`.

  This value may be automatically updated when an instruction is appended. A `Bytecode` object maintains the current stack depth whenever an instruction is added by `addOpcode()`. For example, if DUP is appended, the current stack depth is increased by one. If the new stack depth is more than `max_stack`, then it is assigned to `max_stack`. However, if branch instructions are appended, the current stack depth may not be correctly maintained.

  See Also:
    `addOpcode(int)`

### getMaxLocals

    public int getMaxLocals()

  Gets `max_locals`.

### setMaxLocals

    public void setMaxLocals(int size)

  Sets `max_locals`.

### setMaxLocals

    public void setMaxLocals(boolean isStatic,
                             CtClass[] params,
                             int locals)

  Sets `max_locals`.

  This computes the number of local variables used to pass method parameters and sets `max_locals` to that number plus `locals`.

  Parameters:
    `isStatic` - true if `params` must be interpreted as parameters to a static method.
    `params` - parameter types.
    `locals` - the number of local variables excluding ones used to pass parameters.

### incMaxLocals

    public void incMaxLocals(int diff)

  Increments `max_locals`.

### addExceptionHandler

    public void addExceptionHandler(int start,
                                    int end,
                                    int handler,
                                    CtClass type)

  Adds a new entry of `exception_table`.

### addExceptionHandler

    public void addExceptionHandler(int start,
                                    int end,
                                    int handler,
                                    int type)

  Adds a new entry of `exception_table`.

### currentPc

    public int currentPc()

  Returns the length of bytecode sequence that have been added so far.

### read

    public int read(int offset)

  Reads a signed 8bit value at the offset from the beginning of the bytecode sequence.

  Throws:
    `java.lang.ArrayIndexOutOfBoundsException` - if offset is invalid.

### read16bit

    public int read16bit(int offset)

  Reads a signed 16bit value at the offset from the beginning of the bytecode sequence.

### write

    public void write(int offset,
                      int value)

  Writes an 8bit value at the offset from the beginning of the bytecode sequence.

  Throws:
    `java.lang.ArrayIndexOutOfBoundsException` - if offset is invalid.

### write16bit

    public void write16bit(int offset,
                           int value)

  Writes an 16bit value at the offset from the beginning of the bytecode sequence.

### add

    public void add(int code)

  Appends an 8bit value to the end of the bytecode sequence.

### addOpcode

    public void addOpcode(int code)

  Appends an 8bit opcode to the end of the bytecode sequence. The current stack depth is updated. `max_stack` is updated if the current stack depth is the deepest so far.

  Note: some instructions such as INVOKEVIRTUAL does not update the current stack depth since the increment depends on the method signature. `growStack()` must be explicitly called.

### growStack

    public void growStack(int diff)

  Increases the current stack depth. It also updates `max_stack` if the current stack depth is the deepest so far.

  Parameters:
    `diff` - the number added to the current stack depth.

### getStackDepth

    public int getStackDepth()

  Returns the current stack depth.

### setStackDepth

    public void setStackDepth(int depth)

  Sets the current stack depth. It also updates `max_stack` if the current stack depth is the deepest so far.

  Parameters:
    `depth` - new value.

### addIndex

    public void addIndex(int index)

  Appends a 16bit value to the end of the bytecode sequence. It never changes the current stack depth.

### addAload

    public void addAload(int n)

  Appends ALOAD or (WIDE) ALOAD_<n>

  Parameters:
    `n` - an index into the local variable array.

### addAstore

    public void addAstore(int n)

  Appends ASTORE or (WIDE) ASTORE_<n>

  Parameters:
    `n` - an index into the local variable array.

### addIconst

    public void addIconst(int n)

  Appends ICONST or ICONST_<n>

  Parameters:
    `n` - the pushed integer constant.

### addIload

    public void addIload(int n)

  Appends ILOAD or (WIDE) ILOAD_<n>

  Parameters:
    `n` - an index into the local variable array.

### addIstore

    public void addIstore(int n)

  Appends ISTORE or (WIDE) ISTORE_<n>

  Parameters:
    `n` - an index into the local variable array.

### addLconst

    public void addLconst(long n)

  Appends LCONST or LCONST_<n>

  Parameters:
    `n` - the pushed long integer constant.

### addLload

    public void addLload(int n)

  Appends LLOAD or (WIDE) LLOAD_<n>

  Parameters:
    `n` - an index into the local variable array.

### addLstore

    public void addLstore(int n)

  Appends LSTORE or LSTORE_<n>

  Parameters:
    `n` - an index into the local variable array.

### addDconst

    public void addDconst(double d)

  Appends DCONST or DCONST_<n>

  Parameters:
    `d` - the pushed double constant.

### addDload

    public void addDload(int n)

  Appends DLOAD or (WIDE) DLOAD_<n>

  Parameters:
    `n` - an index into the local variable array.

### addDstore

    public void addDstore(int n)

  Appends DSTORE or (WIDE) DSTORE_<n>

  Parameters:
    `n` - an index into the local variable array.

### addFconst

    public void addFconst(float f)

  Appends FCONST or FCONST_<n>

  Parameters:
    `f` - the pushed float constant.

### addFload

    public void addFload(int n)

  Appends FLOAD or (WIDE) FLOAD_<n>

  Parameters:
    `n` - an index into the local variable array.

### addFstore

    public void addFstore(int n)

  Appends FSTORE or FSTORE_<n>

  Parameters:
    `n` - an index into the local variable array.

### addLoad

    public int addLoad(int n,
                       CtClass type)

  Appends an instruction for loading a value from the local variable at the index `n`.

  Parameters:
    `n` - the index.
    `type` - the type of the loaded value.
  Returns:
    the size of the value (1 or 2 word).

### addStore

    public int addStore(int n,
                        CtClass type)

  Appends an instruction for storing a value into the local variable at the index `n`.

  Parameters:
    `n` - the index.
    `type` - the type of the stored value.
  Returns:
    2 if the type is long or double. Otherwise 1.

### addLoadParameters

    public int addLoadParameters(CtClass[] params,
                                 int offset)

  Appends instructions for loading all the parameters onto the operand stack.

  Parameters:
    `offset` - the index of the first parameter. It is 0 if the method is static. Otherwise, it is 1.

### addCheckcast

    public void addCheckcast(CtClass c)

  Appends CHECKCAST.

  Parameters:
    `c` - the type.

### addCheckcast

    public void addCheckcast(java.lang.String classname)

  Appends CHECKCAST.

  Parameters:
    `classname` - a fully-qualified class name.

### addInstanceof

    public void addInstanceof(java.lang.String classname)

  Appends INSTANCEOF.

  Parameters:
    `classname` - the class name.

### addGetfield

    public void addGetfield(CtClass c,
                            java.lang.String name,
                            java.lang.String type)

  Appends GETFIELD.

  Parameters:
    `c` - the class
    `name` - the field name
    `type` - the descriptor of the field type.
  See Also:
    `Descriptor.of(CtClass)`

### addGetstatic

    public void addGetstatic(CtClass c,
                             java.lang.String name,
                             java.lang.String type)

  Appends GETSTATIC.

  Parameters:
    `c` - the class
    `name` - the field name
    `type` - the descriptor of the field type.
  See Also:
    `Descriptor.of(CtClass)`

### addGetstatic

    public void addGetstatic(java.lang.String c,
                             java.lang.String name,
                             java.lang.String type)

  Appends GETSTATIC.

  Parameters:
    `c` - the fully-qualified class name
    `name` - the field name
    `type` - the descriptor of the field type.
  See Also:
    `Descriptor.of(CtClass)`

### addInvokespecial

    public void addInvokespecial(CtClass clazz,
                                 java.lang.String name,
                                 CtClass returnType,
                                 CtClass[] paramTypes)

  Appends INVOKESPECIAL.

  Parameters:
    `clazz` - the target class.
    `name` - the method name.
    `returnType` - the return type.
    `paramTypes` - the parameter types.

### addInvokespecial

    public void addInvokespecial(CtClass clazz,
                                 java.lang.String name,
                                 java.lang.String desc)

  Appends INVOKESPECIAL.

  Parameters:
    `clazz` - the target class.
    `name` - the method name
    `desc` - the descriptor of the method signature.
  See Also:
    `Descriptor.ofMethod(CtClass,CtClass[])`, `Descriptor.ofConstructor(CtClass[])`

### addInvokespecial

    public void addInvokespecial(java.lang.String clazz,
                                 java.lang.String name,
                                 java.lang.String desc)

  Appends INVOKESPECIAL.

  Parameters:
    `clazz` - the fully-qualified class name.
    `name` - the method name
    `desc` - the descriptor of the method signature.
  See Also:
    `Descriptor.ofMethod(CtClass,CtClass[])`, `Descriptor.ofConstructor(CtClass[])`

### addInvokespecial

    public void addInvokespecial(int clazz,
                                 java.lang.String name,
                                 java.lang.String desc)

  Appends INVOKESPECIAL.

  Parameters:
    `clazz` - the index of `CONSTANT_Class_info` structure.
    `name` - the method name
    `desc` - the descriptor of the method signature.
  See Also:
    `Descriptor.ofMethod(CtClass,CtClass[])`, `Descriptor.ofConstructor(CtClass[])`

### addInvokestatic

    public void addInvokestatic(CtClass clazz,
                                java.lang.String name,
                                CtClass returnType,
                                CtClass[] paramTypes)

  Appends INVOKESTATIC.

  Parameters:
    `clazz` - the target class.
    `name` - the method name
    `returnType` - the return type.
    `paramTypes` - the parameter types.

### addInvokestatic

    public void addInvokestatic(CtClass clazz,
                                java.lang.String name,
                                java.lang.String desc)

  Appends INVOKESTATIC.

  Parameters:
    `clazz` - the target class.
    `name` - the method name
    `desc` - the descriptor of the method signature.
  See Also:
    `Descriptor.ofMethod(CtClass,CtClass[])`

### addInvokestatic

    public void addInvokestatic(java.lang.String classname,
                                java.lang.String name,
                                java.lang.String desc)

  Appends INVOKESTATIC.

  Parameters:
    `classname` - the fully-qualified class name.
    `name` - the method name
    `desc` - the descriptor of the method signature.
  See Also:
    `Descriptor.ofMethod(CtClass,CtClass[])`

### addInvokestatic

    public void addInvokestatic(int clazz,
                                java.lang.String name,
                                java.lang.String desc)

  Appends INVOKESTATIC.

  Parameters:
    `clazz` - the index of `CONSTANT_Class_info` structure.
    `name` - the method name
    `desc` - the descriptor of the method signature.
  See Also:
    `Descriptor.ofMethod(CtClass,CtClass[])`

### addInvokevirtual

    public void addInvokevirtual(CtClass clazz,
                                 java.lang.String name,
                                 CtClass returnType,
                                 CtClass[] paramTypes)

  Appends INVOKEVIRTUAL.

  The specified method must not be an inherited method. It must be directly declared in the class specified in `clazz`.

  Parameters:
    `clazz` - the target class.
    `name` - the method name
    `returnType` - the return type.
    `paramTypes` - the parameter types.

### addInvokevirtual

    public void addInvokevirtual(CtClass clazz,
                                 java.lang.String name,
                                 java.lang.String desc)

  Appends INVOKEVIRTUAL.

  The specified method must not be an inherited method. It must be directly declared in the class specified in `clazz`.

  Parameters:
    `clazz` - the target class.
    `name` - the method name
    `desc` - the descriptor of the method signature.
  See Also:
    `Descriptor.ofMethod(CtClass,CtClass[])`

### addInvokevirtual

    public void addInvokevirtual(java.lang.String classname,
                                 java.lang.String name,
                                 java.lang.String desc)

  Appends INVOKEVIRTUAL.

  The specified method must not be an inherited method. It must be directly declared in the class specified in `classname`.

  Parameters:
    `classname` - the fully-qualified class name.
    `name` - the method name
    `desc` - the descriptor of the method signature.
  See Also:
    `Descriptor.ofMethod(CtClass,CtClass[])`

### addInvokevirtual

    public void addInvokevirtual(int clazz,
                                 java.lang.String name,
                                 java.lang.String desc)

  Appends INVOKEVIRTUAL.

  The specified method must not be an inherited method. It must be directly declared in the class specified by `clazz`.

  Parameters:
    `clazz` - the index of `CONSTANT_Class_info` structure.
    `name` - the method name
    `desc` - the descriptor of the method signature.
  See Also:
    `Descriptor.ofMethod(CtClass,CtClass[])`

### addInvokeinterface

    public void addInvokeinterface(CtClass clazz,
                                   java.lang.String name,
                                   CtClass returnType,
                                   CtClass[] paramTypes,
                                   int count)

  Appends INVOKEINTERFACE.

  Parameters:
    `clazz` - the target class.
    `name` - the method name
    `returnType` - the return type.
    `paramTypes` - the parameter types.
    `count` - the count operand of the instruction.

### addInvokeinterface

    public void addInvokeinterface(CtClass clazz,
                                   java.lang.String name,
                                   java.lang.String desc,
                                   int count)

  Appends INVOKEINTERFACE.

  Parameters:
    `clazz` - the target class.
    `name` - the method name
    `desc` - the descriptor of the method signature.
    `count` - the count operand of the instruction.
  See Also:
    `Descriptor.ofMethod(CtClass,CtClass[])`

### addInvokeinterface

    public void addInvokeinterface(java.lang.String classname,
                                   java.lang.String name,
                                   java.lang.String desc,
                                   int count)

  Appends INVOKEINTERFACE.

  Parameters:
    `classname` - the fully-qualified class name.
    `name` - the method name
    `desc` - the descriptor of the method signature.
    `count` - the count operand of the instruction.
  See Also:
    `Descriptor.ofMethod(CtClass,CtClass[])`

### addInvokeinterface

    public void addInvokeinterface(int clazz,
                                   java.lang.String name,
                                   java.lang.String desc,
                                   int count)

  Appends INVOKEINTERFACE.

  Parameters:
    `clazz` - the index of `CONSTANT_Class_info` structure.
    `name` - the method name
    `desc` - the descriptor of the method signature.
    `count` - the count operand of the instruction.
  See Also:
    `Descriptor.ofMethod(CtClass,CtClass[])`

### addLdc

    public void addLdc(java.lang.String s)

  Appends LDC or LDC_W. The pushed item is a `String` object.

  Parameters:
    `s` - the character string pushed by LDC or LDC_W.

### addLdc

    public void addLdc(int i)

  Appends LDC or LDC_W.

  Parameters:
    `i` - index into the constant pool.

### addLdc2w

    public void addLdc2w(long l)

  Appends LDC2_W. The pushed item is a long value.

### addLdc2w

    public void addLdc2w(double d)

  Appends LDC2_W. The pushed item is a double value.

### addNew

    public void addNew(CtClass clazz)

  Appends NEW.

  Parameters:
    `clazz` - the class of the created instance.

### addNew

    public void addNew(java.lang.String classname)

  Appends NEW.

  Parameters:
    `classname` - the fully-qualified class name.

### addAnewarray

    public void addAnewarray(java.lang.String classname)

  Appends ANEWARRAY.

  Parameters:
    `classname` - the qualified class name of the element type.

### addAnewarray

    public void addAnewarray(CtClass clazz,
                             int length)

  Appends ICONST and ANEWARRAY.

  Parameters:
    `clazz` - the elememnt type.
    `length` - the array length.

### addNewarray

    public void addNewarray(int atype,
                            int length)

  Appends NEWARRAY for primitive types.

  Parameters:
    `atype` - `T_BOOLEAN`, `T_CHAR`, ...
  See Also:
    `Opcode`

### addMultiNewarray

    public int addMultiNewarray(CtClass clazz,
                                int[] dimensions)

  Appends MULTINEWARRAY.

  Parameters:
    `clazz` - the array type.
    `dimensions` - the sizes of all dimensions.
  Returns:
    the length of `dimensions`.

### addMultiNewarray

    public int addMultiNewarray(CtClass clazz,
                                int dim)

  Appends MULTINEWARRAY. The size of every dimension must have been already pushed on the stack.

  Parameters:
    `clazz` - the array type.
    `dim` - the number of the dimensions.
  Returns:
    the value of `dim`.

### addMultiNewarray

    public int addMultiNewarray(java.lang.String desc,
                                int dim)

  Appends MULTINEWARRAY.

  Parameters:
    `desc` - the type descriptor of the created array.
    `dim` - dimensions.
  Returns:
    the value of `dim`.

### addPutfield

    public void addPutfield(CtClass c,
                            java.lang.String name,
                            java.lang.String desc)

  Appends PUTFIELD.

  Parameters:
    `c` - the target class.
    `name` - the field name.
    `desc` - the descriptor of the field type.

### addPutstatic

    public void addPutstatic(CtClass c,
                             java.lang.String name,
                             java.lang.String desc)

  Appends PUTSTATIC.

  Parameters:
    `c` - the target class.
    `name` - the field name.
    `desc` - the descriptor of the field type.

### addReturn

    public void addReturn(CtClass type)

  Appends ARETURN, IRETURN, .., or RETURN.

  Parameters:
    `type` - the return type.

### addRet

    public void addRet(int var)

  Appends RET.

  Parameters:
    `var` - local variable

### addPrintln

    public void addPrintln(java.lang.String message)

  Appends instructions for executing `java.lang.System.println(message)`.

  Parameters:
    `message` - printed message.

Overview | Package | Class | Use | Tree | Deprecated | Index
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Javassist, a Java-bytecode translator toolkit. Copyright (C) 1999-2003 Shigeru Chiba. All Rights Reserved.