org.objectweb.asm.util
public class ASMifierClassVisitor extends ASMifierAbstractVisitor implements ClassVisitor
where Hello is defined by: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(); } }
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 {@link ASMifierClassVisitor} object.
|
Method Summary | |
---|---|
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.