| Prev Class | Next Class | Frames | No Frames |
| Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Objectorg.objectweb.asm.util.AbstractVisitororg.objectweb.asm.util.ASMifierAbstractVisitororg.objectweb.asm.util.ASMifierClassVisitorClassVisitor that prints the ASM code that generates the classes it
visits. This class visitor can be used to quickly write ASM code to generate
some given bytecode: ASMifierClassVisitor visit this compiled class (see the
main method);
import org.objectweb.asm.*;
public class HelloDump implements Opcodes {
public static byte[] dump() throws Exception {
ClassWriter cw = new ClassWriter(false);
FieldVisitor fv;
MethodVisitor mv;
AnnotationVisitor av0;
cw.visit(49,
ACC_PUBLIC + ACC_SUPER,
"Hello",
null,
"java/lang/Object",
null);
cw.visitSource("Hello.java", null);
{
mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESPECIAL,
"java/lang/Object",
"<init>",
"()V");
mv.visitInsn(RETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC,
"main",
"([Ljava/lang/String;)V",
null,
null);
mv.visitFieldInsn(GETSTATIC,
"java/lang/System",
"out",
"Ljava/io/PrintStream;");
mv.visitLdcInsn("hello");
mv.visitMethodInsn(INVOKEVIRTUAL,
"java/io/PrintStream",
"println",
"(Ljava/lang/String;)V");
mv.visitInsn(RETURN);
mv.visitMaxs(2, 1);
mv.visitEnd();
}
cw.visitEnd();
return cw.toByteArray();
}
}
where Hello is defined by:
public class Hello {
public static void main(String[] args) {
System.out.println("hello");
}
}
Field Summary | |
protected PrintWriter |
|
Fields inherited from class org.objectweb.asm.util.ASMifierAbstractVisitor | |
name | |
Fields inherited from class org.objectweb.asm.util.AbstractVisitor | |
OPCODES, TYPES, buf, text | |
Constructor Summary | |
| |
Method Summary | |
static void |
|
void |
|
AnnotationVisitor |
|
void |
|
FieldVisitor |
|
void |
|
MethodVisitor |
|
void |
|
void |
|
Methods inherited from class org.objectweb.asm.util.ASMifierAbstractVisitor | |
visitAnnotation, visitAttribute, visitEnd | |
Methods inherited from class org.objectweb.asm.util.AbstractVisitor | |
appendString, getDefaultAttributes, getText | |
public ASMifierClassVisitor(PrintWriter pw)
Constructs a newASMifierClassVisitorobject.
- Parameters:
pw- the print writer to be used to print the class.
public static void main(String[] args)
throws ExceptionPrints the ASM source code to generate the given class to the standard output. Usage: ASMifierClassVisitor [-debug] <fully qualified class name or class file name>
- Parameters:
args- the command line arguments.
public void visit(int version,
int access,
String name,
String signature,
String superName,
String[] interfaces)
- Specified by:
- visit in interface ClassVisitor
public AnnotationVisitor visitAnnotation(String desc, boolean visible)
- Specified by:
- visitAnnotation in interface ClassVisitor
- Overrides:
- visitAnnotation in interface ASMifierAbstractVisitor
public void visitEnd()
- Specified by:
- visitEnd in interface ClassVisitor
- Overrides:
- visitEnd in interface ASMifierAbstractVisitor
public FieldVisitor visitField(int access, String name, String desc, String signature, Object value)
- Specified by:
- visitField in interface ClassVisitor
public void visitInnerClass(String name,
String outerName,
String innerName,
int access)
- Specified by:
- visitInnerClass in interface ClassVisitor
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions)
- Specified by:
- visitMethod in interface ClassVisitor
public void visitOuterClass(String owner,
String name,
String desc)
- Specified by:
- visitOuterClass in interface ClassVisitor
public void visitSource(String file,
String debug)
- Specified by:
- visitSource in interface ClassVisitor