6 ClassGen cg = new ClassGen("Test1","java.lang.Object",ACC_PUBLIC|ACC_SUPER);
8 FieldGen fg = cg.addField("message",Type.STRING,ACC_PRIVATE|ACC_STATIC);
9 fg.setConstantValue("Hello, World");
11 MethodGen mg = cg.addMethod("main",Type.VOID,new Type[]{Type.arrayType(Type.STRING)},ACC_STATIC|ACC_PUBLIC);
16 mg.add(GETSTATIC,new FieldRef("java.lang.System","out",new Type.Object("java.io.PrintStream")));
17 mg.add(NEW,Type.STRINGBUFFER);
19 mg.add(INVOKESPECIAL,new MethodRef(Type.STRINGBUFFER,"<init>",Type.VOID,Type.NO_ARGS));
20 mg.add(GETSTATIC,new FieldRef("Test1","message",Type.STRING));
21 mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"append",Type.STRINGBUFFER,new Type[]{Type.STRING}));
23 mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"append",Type.STRINGBUFFER,new Type[]{Type.STRING}));
25 mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"append",Type.STRINGBUFFER,new Type[]{Type.INT}));
30 int b1 = mg.add(IFNE);
32 mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"append",Type.STRINGBUFFER,new Type[]{Type.CHAR}));
33 mg.setArg(b1,mg.size());
35 mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"toString",Type.STRING,Type.NO_ARGS));
36 mg.add(INVOKEVIRTUAL,new MethodRef("java.io.PrintStream","println",Type.VOID,new Type[]{Type.STRING}));
38 mg.add(IINC,new MethodGen.Pair(0,-1));
45 cg.dump("Test1.class");
48 Will create this bytecode:
50 public class Test1 extends java.lang.Object{
51 private static java.lang.String message;
53 public static void main(java.lang.String[]);
58 3: getstatic #10; //Field java/lang/System.out:Ljava/io/PrintStream;
59 6: new #12; //class StringBuffer
61 10: invokespecial #16; //Method java/lang/StringBuffer."<init>":()V
62 13: getstatic #20; //Field message:Ljava/lang/String;
63 16: invokevirtual #24; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
64 19: ldc #26; //String -
65 21: invokevirtual #24; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
67 25: invokevirtual #29; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer;
73 36: invokevirtual #32; //Method java/lang/StringBuffer.append:(C)Ljava/lang/StringBuffer;
74 39: invokevirtual #36; //Method java/lang/StringBuffer.toString:()Ljava/lang/String;
75 42: invokevirtual #42; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
84 Running Test1 will produce the following output:<br/>