org.objectweb.asm.util
public class ASMifierClassVisitor extends ASMifierAbstractVisitor implements ClassVisitor
main method);
import org.objectweb.asm.*;
public class HelloDump implements Opcodes {
public static byte[] dump() throws Exception {
ClassWriter cw = new ClassWriter(0);
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 | pw
The print writer to be used to print the class. |
| Constructor Summary | |
|---|---|
| ASMifierClassVisitor(PrintWriter pw)
Constructs a new ASMifierClassVisitor object.
| |
| Method Summary | |
|---|---|
| protected ASMifierMethodVisitor | createASMifierMethodVisitor() |
| static void | main(String[] args)
Prints the ASM source code to generate the given class to the standard
output. |
| void | visit(int version, int access, String name, String signature, String superName, String[] interfaces) |
| AnnotationVisitor | visitAnnotation(String desc, boolean visible) |
| 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) |
Parameters: pw the print writer to be used to print the class.
Usage: ASMifierClassVisitor [-debug] <fully qualified class name or class file name>
Parameters: args the command line arguments.
Throws: Exception if the class cannot be found, or if an IO exception occurs.