org.objectweb.asm
public class ClassWriter extends Object implements ClassVisitor
ClassReader
and adapter class visitor
to generate a modified class from one or more existing Java classes.
Field Summary | |
---|---|
static int | COMPUTE_FRAMES
Flag to automatically compute the stack map frames of methods from
scratch. |
static int | COMPUTE_MAXS
Flag to automatically compute the maximum stack size and the maximum
number of local variables of methods. |
Constructor Summary | |
---|---|
ClassWriter(int flags)
Constructs a new ClassWriter object.
| |
ClassWriter(ClassReader classReader, int flags)
Constructs a new ClassWriter object and enables optimizations for
"mostly add" bytecode transformations. |
Method Summary | |
---|---|
protected String | getCommonSuperClass(String type1, String type2)
Returns the common super type of the two given types. |
int | newClass(String value)
Adds a class reference to the constant pool of the class being build.
|
int | newConst(Object cst)
Adds a number or string constant to the constant pool of the class being
build. |
int | newField(String owner, String name, String desc)
Adds a field reference to the constant pool of the class being build.
|
int | newMethod(String owner, String name, String desc, boolean itf)
Adds a method reference to the constant pool of the class being build.
|
int | newNameType(String name, String desc)
Adds a name and type to the constant pool of the class being build. |
int | newUTF8(String value)
Adds an UTF8 string to the constant pool of the class being build. |
byte[] | toByteArray()
Returns the bytecode of the class that was build with this class writer.
|
void | visit(int version, int access, String name, String signature, String superName, String[] interfaces) |
AnnotationVisitor | visitAnnotation(String desc, boolean visible) |
void | visitAttribute(Attribute attr) |
void | visitEnd() |
FieldVisitor | visitField(int access, String name, String desc, String signature, Object value) |
void | visitInnerClass(String name, String outerName, String innerName, int access) |
MethodVisitor | visitMethod(int access, String name, String desc, String signature, String[] exceptions) |
void | visitOuterClass(String owner, String name, String desc) |
void | visitSource(String file, String debug) |
visitMaxs
method are also ignored and
recomputed from the bytecode. In other words, computeFrames implies
computeMaxs.
See Also: ClassWriter
visitMaxs
method of the
MethodVisitor returned by the visitMethod
method will be ignored, and computed automatically from the signature and
the bytecode of each method.
See Also: ClassWriter
Parameters: flags option flags that can be used to modify the default behavior of this class. See COMPUTE_MAXS, COMPUTE_FRAMES.
Parameters: classReader the ClassReader used to read the original class. It will be used to copy the entire constant pool from the original class and also to copy other fragments of original bytecode where applicable. flags option flags that can be used to modify the default behavior of this class. See COMPUTE_MAXS, COMPUTE_FRAMES.
Parameters: type1 the internal name of a class. type2 the internal name of another class.
Returns: the internal name of the common super class of the two given classes.
Parameters: value the internal name of the class.
Returns: the index of a new or already existing class reference item.
Parameters: cst the value of the constant to be added to the constant pool. This parameter must be an Integer, a Float, a Long, a Double or a String.
Returns: the index of a new or already existing constant item with the given value.
Parameters: owner the internal name of the field's owner class. name the field's name. desc the field's descriptor.
Returns: the index of a new or already existing field reference item.
Parameters: owner the internal name of the method's owner class. name the method's name. desc the method's descriptor. itf true if owner is an interface.
Returns: the index of a new or already existing method reference item.
Parameters: name a name. desc a type descriptor.
Returns: the index of a new or already existing name and type item.
Parameters: value the String value.
Returns: the index of a new or already existing UTF8 item.
Returns: the bytecode of the class that was build with this class writer.