| Prev Class | Next Class | Frames | No Frames |
| Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Objectorg.objectweb.asm.util.PrintClassVisitororg.objectweb.asm.util.ASMifierClassVisitorpublic class ASMifierClassVisitorextends PrintClassVisitorPrintClassVisitor 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.*;
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();
}
}
where Hello is defined by:
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 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 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