Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
org.objectweb.asm.util.AbstractVisitor
org.objectweb.asm.util.ASMifierAbstractVisitor
org.objectweb.asm.util.ASMifierClassVisitor
ClassVisitor
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);where Hello is defined by: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(); } }
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 | |
protected ASMifierMethodVisitor | |
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 , print |
public ASMifierClassVisitor(PrintWriter pw)
Constructs a newASMifierClassVisitor
object.
- Parameters:
pw
- the print writer to be used to print the class.
public static void main(String[] args) throws Exception
Prints 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