Top Description Inners Fields Constructors Methods
javassist

public Class CodeConverter

extends Object
Class Inheritance
Imports
javassist.bytecode.BadBytecode, .CodeAttribute, .CodeIterator, .ConstPool, .MethodInfo, javassist.convert.TransformAccessArrayField, .TransformAfter, .TransformBefore, .TransformCall, .TransformCallToStatic, .TransformFieldAccess, .TransformNew, .TransformNewClass, .TransformReadField, .TransformWriteField, .Transformer

Simple translator of method bodies (also see the javassist.expr package).

Instances of this class specifies how to instrument of the bytecodes representing a method body. They are passed to CtClass.instrument() or CtMethod.instrument() as a parameter.

Example:

ClassPool cp = ClassPool.getDefault();
CtClass point = cp.get("Point");
CtClass singleton = cp.get("Singleton");
CtClass client = cp.get("Client");
CodeConverter conv = new CodeConverter();
conv.replaceNew(point, singleton, "makePoint");
client.instrument(conv);

This program substitutes "Singleton.makePoint()" for all occurrences of "new Point()" appearing in methods declared in a Client class.

See Also
javassist.CtClass#instrument(CodeConverter), javassist.CtMethod#instrument(CodeConverter), javassist.expr.ExprEditor

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static interface
CodeConverter.ArrayAccessReplacementMethodNames

Interface containing the method names to be used as array access replacements.

public static class
CodeConverter.DefaultArrayAccessReplacementMethodNames

Default implementation of the ArrayAccessReplacementMethodNames interface giving default values for method names to be used for replacing accesses to array elements.

Field Summary

Modifier and TypeField and Description
protected Transformer

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
protected void
doit(CtClass clazz, MethodInfo minfo, ConstPool cp)

Performs code conversion.

public void
insertAfterMethod(CtMethod
the method originally invoked.
origMethod
,
CtMethod
the method invoked after origMethod.
afterMethod
)

Inserts a call to another method after an existing method call.

public void
insertBeforeMethod(CtMethod
the method originally invoked.
origMethod
,
CtMethod
the method invoked before origMethod.
beforeMethod
)

Insert a call to another method before an existing method call.

public void
redirectFieldAccess(CtField
the originally accessed field.
field
,
CtClass
the class declaring the substituted field.
newClass
,
String
the name of the substituted field.
newFieldname
)

Modify a method body so that field read/write expressions access a different field from the original one.

public void
redirectMethodCall(CtMethod
original method
origMethod
,
CtMethod
substituted method
substMethod
)

Modify method invocations in a method body so that a different method will be invoked.

public void
redirectMethodCall(String
the old name of the method.
oldMethodName
,
CtMethod
the method with the new name.
newMethod
)

Correct invocations to a method that has been renamed.

public void
redirectMethodCallToStatic(CtMethod
original method
origMethod
,
CtMethod
static method
staticMethod
)

Redirect non-static method invocations in a method body to a static method.

public void
replaceArrayAccess(CtClass
the class containing the static methods.
calledClass
,
CodeConverter.ArrayAccessReplacementMethodNames
contains the names of the methods to replace the different kinds of array access with.
names
)

Modify a method body, so that ALL accesses to an array are replaced with calls to static methods within another class.

public void
replaceFieldRead(CtField
the field.
field
,
CtClass
the class in which the static method is declared.
calledClass
,
String
the name of the static method.
calledMethod
)

Modify a method body so that an expression reading the specified field is replaced with a call to the specified static method.

public void
replaceFieldWrite(CtField
the field.
field
,
CtClass
the class in which the static method is declared.
calledClass
,
String
the name of the static method.
calledMethod
)

Modify a method body so that an expression writing the specified field is replaced with a call to the specified static method.

public void
replaceNew(CtClass
the instantiated class.
newClass
,
CtClass
the class in which the static method is declared.
calledClass
,
String
the name of the static method.
calledMethod
)

Modify a method body so that instantiation of the specified class is replaced with a call to the specified static method.

public void
replaceNew(CtClass oldClass, CtClass newClass)

Modify a method body so that instantiation of the class specified by oldClass is replaced with instantiation of another class newClass.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

transformersback to summary
protected Transformer transformers

Constructor Detail

CodeConverterback to summary
public CodeConverter()

Method Detail

doitback to summary
protected void doit(CtClass clazz, MethodInfo minfo, ConstPool cp) throws CannotCompileException

Performs code conversion.

insertAfterMethodback to summary
public void insertAfterMethod(CtMethod origMethod, CtMethod afterMethod) throws CannotCompileException

Inserts a call to another method after an existing method call. That "after" method must be static. The return type must be void. As parameters, the after method receives the target object and all the parameters to the originally invoked method. For example, if the originally invoked method is move():

class Point {
    Point move(int x, int y) { ... }
}

Then the after method must be something like this:

class Verbose {
    static void print(Point target, int x, int y) { ... }
}

The CodeConverter would translate bytecode equivalent to:

Point p2 = p.move(x + y, 0);

into the bytecode equivalent to:

int tmp1 = x + y;
int tmp2 = 0;
Point p2 = p.move(tmp1, tmp2);
Verbose.print(p, tmp1, tmp2);
Parameters
origMethod:CtMethod

the method originally invoked.

afterMethod:CtMethod

the method invoked after origMethod.

insertBeforeMethodback to summary
public void insertBeforeMethod(CtMethod origMethod, CtMethod beforeMethod) throws CannotCompileException

Insert a call to another method before an existing method call. That "before" method must be static. The return type must be void. As parameters, the before method receives the target object and all the parameters to the originally invoked method. For example, if the originally invoked method is move():

class Point {
    Point move(int x, int y) { ... }
}

Then the before method must be something like this:

class Verbose {
    static void print(Point target, int x, int y) { ... }
}

The CodeConverter would translate bytecode equivalent to:

Point p2 = p.move(x + y, 0);

into the bytecode equivalent to:

int tmp1 = x + y;
int tmp2 = 0;
Verbose.print(p, tmp1, tmp2);
Point p2 = p.move(tmp1, tmp2);
Parameters
origMethod:CtMethod

the method originally invoked.

beforeMethod:CtMethod

the method invoked before origMethod.

redirectFieldAccessback to summary
public void redirectFieldAccess(CtField field, CtClass newClass, String newFieldname)

Modify a method body so that field read/write expressions access a different field from the original one.

Note that this method changes only the filed name and the class declaring the field; the type of the target object does not change. Therefore, the substituted field must be declared in the same class or a superclass of the original class.

Also, clazz and newClass must specify the class directly declaring the field. They must not specify a subclass of that class.

Parameters
field:CtField

the originally accessed field.

newClass:CtClass

the class declaring the substituted field.

newFieldname:String

the name of the substituted field.

redirectMethodCallback to summary
public void redirectMethodCall(CtMethod origMethod, CtMethod substMethod) throws CannotCompileException

Modify method invocations in a method body so that a different method will be invoked.

Note that the target object, the parameters, or the type of invocation (static method call, interface call, or private method call) are not modified. Only the method name is changed. The substituted method must have the same signature that the original one has. If the original method is a static method, the substituted method must be static.

Parameters
origMethod:CtMethod

original method

substMethod:CtMethod

substituted method

redirectMethodCallback to summary
public void redirectMethodCall(String oldMethodName, CtMethod newMethod) throws CannotCompileException

Correct invocations to a method that has been renamed. If a method is renamed, calls to that method must be also modified so that the method with the new name will be called.

The method must be declared in the same class before and after it is renamed.

Note that the target object, the parameters, or the type of invocation (static method call, interface call, or private method call) are not modified. Only the method name is changed.

Parameters
oldMethodName:String

the old name of the method.

newMethod:CtMethod

the method with the new name.

See Also
javassist.CtMethod#setName(String)
redirectMethodCallToStaticback to summary
public void redirectMethodCallToStatic(CtMethod origMethod, CtMethod staticMethod)

Redirect non-static method invocations in a method body to a static method. The return type must be same with the originally invoked method. As parameters, the static method receives the target object and all the parameters to the originally invoked method. For example, if the originally invoked method is move():

class Point {
    Point move(int x, int y) { ... }
}

Then the static method must be something like this:

class Verbose {
    static Point print(Point target, int x, int y) { ... }
}

The CodeConverter would translate bytecode equivalent to:

Point p2 = p.move(x + y, 0);

into the bytecode equivalent to:

Point p2 = Verbose.print(p, x + y, 0);
Parameters
origMethod:CtMethod

original method

staticMethod:CtMethod

static method

replaceArrayAccessback to summary
public void replaceArrayAccess(CtClass calledClass, CodeConverter.ArrayAccessReplacementMethodNames names) throws NotFoundException

Modify a method body, so that ALL accesses to an array are replaced with calls to static methods within another class. In the case of reading an element from the array, this is replaced with a call to a static method with the array and the index as arguments, the return value is the value read from the array. If writing to an array, this is replaced with a call to a static method with the array, index and new value as parameters, the return value of the static method is void.

The calledClass parameter is the class containing the static methods to be used for array replacement. The names parameter points to an implementation of ArrayAccessReplacementMethodNames which specifies the names of the method to be used for access for each type of array. For example reading from an int[] will require a different method than if writing to an int[], and writing to a long[] will require a different method than if writing to a byte[]. If the implementation of ArrayAccessReplacementMethodNames does not contain the name for access for a type of array, that access is not replaced.

A default implementation of ArrayAccessReplacementMethodNames called DefaultArrayAccessReplacementMethodNames has been provided and is what is used in the following example. This also assumes that 'foo.ArrayAdvisor' is the name of the CtClass passed in.

If we have the following class:

class POJO{
   int[] ints = new int[]{1, 2, 3, 4, 5};
   long[] longs = new int[]{10, 20, 30};
   Object objects = new Object[]{true, false};
   Integer[] integers = new Integer[]{new Integer(10)};
}
and this is accessed as:
POJO p = new POJO();

//Write to int array
p.ints[2] = 7;

//Read from int array
int i = p.ints[2];

//Write to long array
p.longs[2] = 1000L;

//Read from long array
long l = p.longs[2];

//Write to Object array
p.objects[2] = "Hello";

//Read from Object array
Object o = p.objects[2];

//Write to Integer array
Integer integer = new Integer(5);
p.integers[0] = integer;

//Read from Object array
integer = p.integers[0];
Following instrumentation we will have
POJO p = new POJO();

//Write to int array
ArrayAdvisor.arrayWriteInt(p.ints, 2, 7);

//Read from int array
int i = ArrayAdvisor.arrayReadInt(p.ints, 2);

//Write to long array
ArrayAdvisor.arrayWriteLong(p.longs, 2, 1000L);

//Read from long array
long l = ArrayAdvisor.arrayReadLong(p.longs, 2);

//Write to Object array
ArrayAdvisor.arrayWriteObject(p.objects, 2, "Hello");

//Read from Object array
Object o = ArrayAdvisor.arrayReadObject(p.objects, 2);

//Write to Integer array
Integer integer = new Integer(5);
ArrayAdvisor.arrayWriteObject(p.integers, 0, integer);

//Read from Object array
integer = ArrayAdvisor.arrayWriteObject(p.integers, 0);
Parameters
calledClass:CtClass

the class containing the static methods.

names:CodeConverter.ArrayAccessReplacementMethodNames

contains the names of the methods to replace the different kinds of array access with.

See Also
DefaultArrayAccessReplacementMethodNames
replaceFieldReadback to summary
public void replaceFieldRead(CtField field, CtClass calledClass, String calledMethod)

Modify a method body so that an expression reading the specified field is replaced with a call to the specified static method. This static method receives the target object of the original read expression as a parameter. It must return a value of the same type as the field.

For example, the program below

Point p = new Point();
int newX = p.x + 3;

can be translated into:

Point p = new Point();
int newX = Accessor.readX(p) + 3;

where

public class Accessor {
    public static int readX(Object target) { ... }
}

The type of the parameter of readX() must be java.lang.Object independently of the actual type of target. The return type must be the same as the field type.

Parameters
field:CtField

the field.

calledClass:CtClass

the class in which the static method is declared.

calledMethod:String

the name of the static method.

replaceFieldWriteback to summary
public void replaceFieldWrite(CtField field, CtClass calledClass, String calledMethod)

Modify a method body so that an expression writing the specified field is replaced with a call to the specified static method. This static method receives two parameters: the target object of the original write expression and the assigned value. The return type of the static method is void.

For example, the program below

Point p = new Point();
p.x = 3;

can be translated into:

Point p = new Point();
Accessor.writeX(3);

where

public class Accessor {
    public static void writeX(Object target, int value) { ... }
}

The type of the first parameter of writeX() must be java.lang.Object independently of the actual type of target. The type of the second parameter is the same as the field type.

Parameters
field:CtField

the field.

calledClass:CtClass

the class in which the static method is declared.

calledMethod:String

the name of the static method.

replaceNewback to summary
public void replaceNew(CtClass newClass, CtClass calledClass, String calledMethod)

Modify a method body so that instantiation of the specified class is replaced with a call to the specified static method. For example, replaceNew(ctPoint, ctSingleton, "createPoint") (where ctPoint and ctSingleton are compile-time classes for class Point and class Singleton, respectively) replaces all occurrences of:

new Point(x, y)
in the method body with:
Singleton.createPoint(x, y)

This enables to intercept instantiation of Point and change the samentics. For example, the following createPoint() implements the singleton pattern:

public static Point createPoint(int x, int y) {
    if (aPoint == null)
        aPoint = new Point(x, y);
    return aPoint;
}

The static method call substituted for the original new expression must be able to receive the same set of parameters as the original constructor. If there are multiple constructors with different parameter types, then there must be multiple static methods with the same name but different parameter types.

The return type of the substituted static method must be the exactly same as the type of the instantiated class specified by newClass.

Parameters
newClass:CtClass

the instantiated class.

calledClass:CtClass

the class in which the static method is declared.

calledMethod:String

the name of the static method.

replaceNewback to summary
public void replaceNew(CtClass oldClass, CtClass newClass)

Modify a method body so that instantiation of the class specified by oldClass is replaced with instantiation of another class newClass. For example, replaceNew(ctPoint, ctPoint2) (where ctPoint and ctPoint2 are compile-time classes for class Point and class Point2, respectively) replaces all occurrences of:

new Point(x, y)
in the method body with:
new Point2(x, y)

Note that Point2 must be type-compatible with Point. It must have the same set of methods, fields, and constructors as the replaced class.

javassist back to summary

public Interface CodeConverter.ArrayAccessReplacementMethodNames

Known Direct Implementers
javassist.CodeConverter.DefaultArrayAccessReplacementMethodNames

Interface containing the method names to be used as array access replacements.
Author
Kabir Khan
Version
$Revision: 1.16 $

Method Summary

Modifier and TypeMethod and Description
public String
byteOrBooleanRead()

Returns the name of a static method with the signature (Ljava/lang/Object;I)B to replace reading from a byte[].

public String
byteOrBooleanWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;IB)V to replace writing to a byte[].

public String

Returns:

the name of a static method with the signature (Ljava/lang/Object;I)C to replace reading from a char[].
charRead
()

public String
charWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;IC)V to replace writing to a byte[].

public String
doubleRead()

Returns the name of a static method with the signature (Ljava/lang/Object;I)D to replace reading from a double[].

public String
doubleWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;ID)V to replace writing to a double[].

public String
floatRead()

Returns the name of a static method with the signature (Ljava/lang/Object;I)F to replace reading from a float[].

public String
floatWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;IF)V to replace writing to a float[].

public String
intRead()

Returns the name of a static method with the signature (Ljava/lang/Object;I)I to replace reading from a int[].

public String
intWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;II)V to replace writing to a int[].

public String
longRead()

Returns the name of a static method with the signature (Ljava/lang/Object;I)J to replace reading from a long[].

public String
longWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;IJ)V to replace writing to a long[].

public String
objectRead()

Returns the name of a static method with the signature (Ljava/lang/Object;I)Ljava/lang/Object; to replace reading from a Object[] (or any subclass of object).

public String
objectWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;ILjava/lang/Object;)V to replace writing to a Object[] (or any subclass of object).

public String
shortRead()

Returns the name of a static method with the signature (Ljava/lang/Object;I)S to replace reading from a short[].

public String
shortWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;IS)V to replace writing to a short[].

Method Detail

byteOrBooleanReadback to summary
public String byteOrBooleanRead()

Returns the name of a static method with the signature (Ljava/lang/Object;I)B to replace reading from a byte[].

byteOrBooleanWriteback to summary
public String byteOrBooleanWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;IB)V to replace writing to a byte[].

charReadback to summary
public String charRead()
Returns:String

the name of a static method with the signature (Ljava/lang/Object;I)C to replace reading from a char[].

charWriteback to summary
public String charWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;IC)V to replace writing to a byte[].

doubleReadback to summary
public String doubleRead()

Returns the name of a static method with the signature (Ljava/lang/Object;I)D to replace reading from a double[].

doubleWriteback to summary
public String doubleWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;ID)V to replace writing to a double[].

floatReadback to summary
public String floatRead()

Returns the name of a static method with the signature (Ljava/lang/Object;I)F to replace reading from a float[].

floatWriteback to summary
public String floatWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;IF)V to replace writing to a float[].

intReadback to summary
public String intRead()

Returns the name of a static method with the signature (Ljava/lang/Object;I)I to replace reading from a int[].

intWriteback to summary
public String intWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;II)V to replace writing to a int[].

longReadback to summary
public String longRead()

Returns the name of a static method with the signature (Ljava/lang/Object;I)J to replace reading from a long[].

longWriteback to summary
public String longWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;IJ)V to replace writing to a long[].

objectReadback to summary
public String objectRead()

Returns the name of a static method with the signature (Ljava/lang/Object;I)Ljava/lang/Object; to replace reading from a Object[] (or any subclass of object).

objectWriteback to summary
public String objectWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;ILjava/lang/Object;)V to replace writing to a Object[] (or any subclass of object).

shortReadback to summary
public String shortRead()

Returns the name of a static method with the signature (Ljava/lang/Object;I)S to replace reading from a short[].

shortWriteback to summary
public String shortWrite()

Returns the name of a static method with the signature (Ljava/lang/Object;IS)V to replace writing to a short[].

javassist back to summary

public Class CodeConverter.DefaultArrayAccessReplacementMethodNames

extends Object
implements ArrayAccessReplacementMethodNames
Class Inheritance
  • java.lang.Object
  • javassist.CodeConverter.DefaultArrayAccessReplacementMethodNames
All Implemented Interfaces
javassist.CodeConverter.ArrayAccessReplacementMethodNames

Default implementation of the ArrayAccessReplacementMethodNames interface giving default values for method names to be used for replacing accesses to array elements.
Author
Kabir Khan
Version
$Revision: 1.16 $

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public String
byteOrBooleanRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.byteOrBooleanRead.

Returns "arrayReadByteOrBoolean" as the name of the static method with the signature (Ljava/lang/Object;I)B to replace reading from a byte[].

public String
byteOrBooleanWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.byteOrBooleanWrite.

Returns "arrayWriteByteOrBoolean" as the name of the static method with the signature (Ljava/lang/Object;IB)V to replace writing to a byte[].

public String
charRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.charRead.

Returns "arrayReadChar" as the name of the static method with the signature (Ljava/lang/Object;I)C to replace reading from a char[].

public String
charWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.charWrite.

Returns "arrayWriteChar" as the name of the static method with the signature (Ljava/lang/Object;IC)V to replace writing to a byte[].

public String
doubleRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.doubleRead.

Returns "arrayReadDouble" as the name of the static method with the signature (Ljava/lang/Object;I)D to replace reading from a double[].

public String
doubleWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.doubleWrite.

Returns "arrayWriteDouble" as the name of the static method with the signature (Ljava/lang/Object;ID)V to replace writing to a double[].

public String
floatRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.floatRead.

Returns "arrayReadFloat" as the name of the static method with the signature (Ljava/lang/Object;I)F to replace reading from a float[].

public String
floatWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.floatWrite.

Returns "arrayWriteFloat" as the name of the static method with the signature (Ljava/lang/Object;IF)V to replace writing to a float[].

public String
intRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.intRead.

Returns "arrayReadInt" as the name of the static method with the signature (Ljava/lang/Object;I)I to replace reading from a int[].

public String
intWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.intWrite.

Returns "arrayWriteInt" as the name of the static method with the signature (Ljava/lang/Object;II)V to replace writing to a int[].

public String
longRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.longRead.

Returns "arrayReadLong" as the name of the static method with the signature (Ljava/lang/Object;I)J to replace reading from a long[].

public String
longWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.longWrite.

Returns "arrayWriteLong" as the name of the static method with the signature (Ljava/lang/Object;IJ)V to replace writing to a long[].

public String
objectRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.objectRead.

Returns "arrayReadObject" as the name of the static method with the signature (Ljava/lang/Object;I)Ljava/lang/Object; to replace reading from a Object[] (or any subclass of object).

public String
objectWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.objectWrite.

Returns "arrayWriteObject" as the name of the static method with the signature (Ljava/lang/Object;ILjava/lang/Object;)V to replace writing to a Object[] (or any subclass of object).

public String
shortRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.shortRead.

Returns "arrayReadShort" as the name of the static method with the signature (Ljava/lang/Object;I)S to replace reading from a short[].

public String
shortWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.shortWrite.

Returns "arrayWriteShort" as the name of the static method with the signature (Ljava/lang/Object;IS)V to replace writing to a short[].

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

DefaultArrayAccessReplacementMethodNamesback to summary
public DefaultArrayAccessReplacementMethodNames()

Method Detail

byteOrBooleanReadback to summary
public String byteOrBooleanRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.byteOrBooleanRead.

Returns "arrayReadByteOrBoolean" as the name of the static method with the signature (Ljava/lang/Object;I)B to replace reading from a byte[].

Annotations
@Override
byteOrBooleanWriteback to summary
public String byteOrBooleanWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.byteOrBooleanWrite.

Returns "arrayWriteByteOrBoolean" as the name of the static method with the signature (Ljava/lang/Object;IB)V to replace writing to a byte[].

Annotations
@Override
charReadback to summary
public String charRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.charRead.

Returns "arrayReadChar" as the name of the static method with the signature (Ljava/lang/Object;I)C to replace reading from a char[].

Returns:String

Doc from javassist.CodeConverter.ArrayAccessReplacementMethodNames.charRead.

the name of a static method with the signature (Ljava/lang/Object;I)C to replace reading from a char[].

Annotations
@Override
charWriteback to summary
public String charWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.charWrite.

Returns "arrayWriteChar" as the name of the static method with the signature (Ljava/lang/Object;IC)V to replace writing to a byte[].

Annotations
@Override
doubleReadback to summary
public String doubleRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.doubleRead.

Returns "arrayReadDouble" as the name of the static method with the signature (Ljava/lang/Object;I)D to replace reading from a double[].

Annotations
@Override
doubleWriteback to summary
public String doubleWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.doubleWrite.

Returns "arrayWriteDouble" as the name of the static method with the signature (Ljava/lang/Object;ID)V to replace writing to a double[].

Annotations
@Override
floatReadback to summary
public String floatRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.floatRead.

Returns "arrayReadFloat" as the name of the static method with the signature (Ljava/lang/Object;I)F to replace reading from a float[].

Annotations
@Override
floatWriteback to summary
public String floatWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.floatWrite.

Returns "arrayWriteFloat" as the name of the static method with the signature (Ljava/lang/Object;IF)V to replace writing to a float[].

Annotations
@Override
intReadback to summary
public String intRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.intRead.

Returns "arrayReadInt" as the name of the static method with the signature (Ljava/lang/Object;I)I to replace reading from a int[].

Annotations
@Override
intWriteback to summary
public String intWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.intWrite.

Returns "arrayWriteInt" as the name of the static method with the signature (Ljava/lang/Object;II)V to replace writing to a int[].

Annotations
@Override
longReadback to summary
public String longRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.longRead.

Returns "arrayReadLong" as the name of the static method with the signature (Ljava/lang/Object;I)J to replace reading from a long[].

Annotations
@Override
longWriteback to summary
public String longWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.longWrite.

Returns "arrayWriteLong" as the name of the static method with the signature (Ljava/lang/Object;IJ)V to replace writing to a long[].

Annotations
@Override
objectReadback to summary
public String objectRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.objectRead.

Returns "arrayReadObject" as the name of the static method with the signature (Ljava/lang/Object;I)Ljava/lang/Object; to replace reading from a Object[] (or any subclass of object).

Annotations
@Override
objectWriteback to summary
public String objectWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.objectWrite.

Returns "arrayWriteObject" as the name of the static method with the signature (Ljava/lang/Object;ILjava/lang/Object;)V to replace writing to a Object[] (or any subclass of object).

Annotations
@Override
shortReadback to summary
public String shortRead()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.shortRead.

Returns "arrayReadShort" as the name of the static method with the signature (Ljava/lang/Object;I)S to replace reading from a short[].

Annotations
@Override
shortWriteback to summary
public String shortWrite()

Implements javassist.CodeConverter.ArrayAccessReplacementMethodNames.shortWrite.

Returns "arrayWriteShort" as the name of the static method with the signature (Ljava/lang/Object;IS)V to replace writing to a short[].

Annotations
@Override