Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
org.objectweb.asm.util.PrintClassVisitor
org.objectweb.asm.util.ASMifierClassVisitor
public class ASMifierClassVisitor
extends PrintClassVisitor
PrintClassVisitor
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.*; import java.io.FileOutputStream; public class Dump implements Constants { public static void main (String[] args) throws Exception { ClassWriter cw = new ClassWriter(false); CodeVisitor cv; cw.visit(ACC_PUBLIC + ACC_SUPER, "Hello", "java/lang/Object", null, "Hello.java"); { cv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "main", "([Ljava/lang/String;)V", null, null); cv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); cv.visitLdcInsn("hello"); cv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V"); cv.visitInsn(RETURN); cv.visitMaxs(2, 1); } { cv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); cv.visitVarInsn(ALOAD, 0); cv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); cv.visitInsn(RETURN); cv.visitMaxs(1, 1); } cw.visitEnd(); FileOutputStream os = new FileOutputStream("Dumped.class"); os.write(cw.toByteArray()); os.close(); } }
public class Hello { public static void main (String[] args) { System.out.println("hello"); } }
Field Summary |
Fields inherited from class org.objectweb.asm.util.PrintClassVisitor | |
buf , pw , text |
Constructor Summary | |
|
Method Summary | |
static void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
CodeVisitor |
|
Methods inherited from class org.objectweb.asm.util.PrintClassVisitor | |
getDefaultAttributes , visitEnd |
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 superName, String[] interfaces, String sourceFile)
- Specified by:
- visit in interface ClassVisitor
public void visitAttribute(Attribute attr)
- Specified by:
- visitAttribute in interface ClassVisitor
public void visitEnd()
- Specified by:
- visitEnd in interface ClassVisitor
- Overrides:
- visitEnd in interface PrintClassVisitor
public void visitField(int access, String name, String desc, Object value, Attribute attrs)
- Specified by:
- visitField in interface ClassVisitor
public void visitInnerClass(String name, String outerName, String innerName, int access)
- Specified by:
- visitInnerClass in interface ClassVisitor
public CodeVisitor visitMethod(int access, String name, String desc, String[] exceptions, Attribute attrs)
- Specified by:
- visitMethod in interface ClassVisitor