public class ClassWriter extends java.lang.Object implements ClassVisitor
ClassVisitor that generates Java class files. More
precisely this visitor generates a byte array conforming to the Java class
file format. It can be used alone, to generate a Java class "from scratch",
or with one or more adapter class
visitors to generate a modified class from one or more existing Java classes.| Constructor and Description |
|---|
ClassWriter(boolean computeMaxs)
Constructs a new
ClassWriter object. |
| Modifier and Type | Method and Description |
|---|---|
byte[] |
toByteArray()
Returns the bytecode of the class that was build with this class writer.
|
void |
visit(int access,
java.lang.String name,
java.lang.String superName,
java.lang.String[] interfaces,
java.lang.String sourceFile)
Visits the header of the class.
|
void |
visitEnd()
Visits the end of the class.
|
void |
visitField(int access,
java.lang.String name,
java.lang.String desc,
java.lang.Object value)
Visits a field of the class.
|
void |
visitInnerClass(java.lang.String name,
java.lang.String outerName,
java.lang.String innerName,
int access)
Visits information about an inner class.
|
CodeVisitor |
visitMethod(int access,
java.lang.String name,
java.lang.String desc,
java.lang.String[] exceptions)
Visits a method of the class.
|
public ClassWriter(boolean computeMaxs)
ClassWriter object.computeMaxs - true if the maximum stack size and the maximum
number of local variables must be automatically computed. If this flag
is true, then the arguments of the visitMaxs method of the CodeVisitor returned by the visitMethod method
will be ignored, and computed automatically from the signature and
the bytecode of each method.public void visit(int access,
java.lang.String name,
java.lang.String superName,
java.lang.String[] interfaces,
java.lang.String sourceFile)
ClassVisitorvisit in interface ClassVisitoraccess - the class's access flags (see Constants). This
parameter also indicates if the class is deprecated.name - the internal name of the class (see getInternalName).superName - the internal of name of the super class (see getInternalName). For interfaces, the super
class is Object. May be null, but only for the java.lang.Object class.interfaces - the internal names of the class's interfaces (see getInternalName). May be null.sourceFile - the name of the source file from which this class was
compiled. May be null.public void visitInnerClass(java.lang.String name,
java.lang.String outerName,
java.lang.String innerName,
int access)
ClassVisitorvisitInnerClass in interface ClassVisitorname - the internal name of an inner class (see getInternalName).outerName - the internal name of the class to which the inner class
belongs (see getInternalName). May be
null.innerName - the (simple) name of the inner class inside its enclosing
class. May be null for anonymous inner classes.access - the access flags of the inner class as originally declared
in the enclosing class.public void visitField(int access,
java.lang.String name,
java.lang.String desc,
java.lang.Object value)
ClassVisitorvisitField in interface ClassVisitoraccess - the field's access flags (see Constants). This
parameter also indicates if the field is synthetic and/or deprecated.name - the field's name.desc - the field's descriptor (see Type).value - the field's initial value. This parameter, which may be
null if the field does not have an initial value, must be an
Integer, a Float, a
Long, a Double or a
String.public CodeVisitor visitMethod(int access, java.lang.String name, java.lang.String desc, java.lang.String[] exceptions)
ClassVisitorCodeVisitor instance (or null) each time it
is called, i.e., it should not return a previously returned visitor.visitMethod in interface ClassVisitoraccess - the method's access flags (see Constants). This
parameter also indicates if the method is synthetic and/or deprecated.name - the method's name.desc - the method's descriptor (see Type).exceptions - the internal names of the method's exception
classes (see getInternalName). May be
null.public void visitEnd()
ClassVisitorvisitEnd in interface ClassVisitorpublic byte[] toByteArray()