diff options
author | chibash <chiba@javassist.org> | 2015-02-04 01:20:21 +0900 |
---|---|---|
committer | chibash <chiba@javassist.org> | 2015-02-04 01:20:21 +0900 |
commit | c43f4a7cde41d04095feb027f33f3ab4da7248bd (patch) | |
tree | bada37243778b56128ca3b505685e8d49224d5a3 /src/main/javassist/bytecode | |
parent | e59339343a538699b632bd9fa0cf4f251ab6f3ee (diff) | |
download | javassist-c43f4a7cde41d04095feb027f33f3ab4da7248bd.tar.gz javassist-c43f4a7cde41d04095feb027f33f3ab4da7248bd.zip |
updated javadoc comments. makeClass(ClassFile cf) was added to ClassPool.
Diffstat (limited to 'src/main/javassist/bytecode')
-rw-r--r-- | src/main/javassist/bytecode/ClassFile.java | 29 | ||||
-rw-r--r-- | src/main/javassist/bytecode/ConstPool.java | 12 | ||||
-rw-r--r-- | src/main/javassist/bytecode/FieldInfo.java | 9 | ||||
-rw-r--r-- | src/main/javassist/bytecode/MethodInfo.java | 17 |
4 files changed, 64 insertions, 3 deletions
diff --git a/src/main/javassist/bytecode/ClassFile.java b/src/main/javassist/bytecode/ClassFile.java index cc7cae59..f27ff4d8 100644 --- a/src/main/javassist/bytecode/ClassFile.java +++ b/src/main/javassist/bytecode/ClassFile.java @@ -23,13 +23,38 @@ import java.util.ArrayList; import java.util.List; import java.util.ListIterator; import java.util.Map; + import javassist.CannotCompileException; /** * <code>ClassFile</code> represents a Java <code>.class</code> file, which * consists of a constant pool, methods, fields, and attributes. - * + * + * <p>For example, + * <blockquote><pre> + * ClassFile cf = new ClassFile(false, "test.Foo", null); + * cf.setInterfaces(new String[] { "java.lang.Cloneable" }); + * + * FieldInfo f = new FieldInfo(cf.getConstPool(), "width", "I"); + * f.setAccessFlags(AccessFlag.PUBLIC); + * cf.addField(f); + * + * cf.write(new DataOutputStream(new FileOutputStream("Foo.class"))); + * </pre></blockquote> + * This code generates a class file <code>Foo.class</code> for the following class: + * <blockquote><pre> + * package test; + * class Foo implements Cloneable { + * public int width; + * } + * </pre></blockquote> + * </p> + * + * @see FieldInfo + * @see MethodInfo + * @see ClassFileWriter * @see javassist.CtClass#getClassFile() + * @see javassist.ClassPool#makeClass(ClassFile) */ public final class ClassFile { int major, minor; // version number @@ -132,7 +157,7 @@ public final class ClassFile { * @param classname * a fully-qualified class name * @param superclass - * a fully-qualified super class name + * a fully-qualified super class name or null. */ public ClassFile(boolean isInterface, String classname, String superclass) { major = MAJOR_VERSION; diff --git a/src/main/javassist/bytecode/ConstPool.java b/src/main/javassist/bytecode/ConstPool.java index f05dfd4f..78935160 100644 --- a/src/main/javassist/bytecode/ConstPool.java +++ b/src/main/javassist/bytecode/ConstPool.java @@ -94,11 +94,21 @@ public final class ConstPool { public static final int CONST_Utf8 = Utf8Info.tag; /** - * <code>Cosnt_MethodHandle</code> + * <code>CONSTANT_MethodHandle</code> */ public static final int CONST_MethodHandle = MethodHandleInfo.tag; /** + * <code>CONSTANT_MethodHandle</code> + */ + public static final int CONST_MethodType = MethodTypeInfo.tag; + + /** + * <code>CONSTANT_MethodHandle</code> + */ + public static final int CONST_InvokeDynamic = InvokeDynamicInfo.tag; + + /** * Represents the class using this constant pool table. */ public static final CtClass THIS = null; diff --git a/src/main/javassist/bytecode/FieldInfo.java b/src/main/javassist/bytecode/FieldInfo.java index 485df3dd..cbba0a85 100644 --- a/src/main/javassist/bytecode/FieldInfo.java +++ b/src/main/javassist/bytecode/FieldInfo.java @@ -25,6 +25,15 @@ import java.util.ArrayList; /** * <code>field_info</code> structure. * + * <p>The following code adds a public field <code>width</code> + * of <code>int</code> type: + * <blockquote><pre> + * ClassFile cf = ... + * FieldInfo f = new FieldInfo(cf.getConstPool(), "width", "I"); + * f.setAccessFlags(AccessFlag.PUBLIC); + * cf.addField(f); + * </pre></blockquote> + * * @see javassist.CtField#getFieldInfo() */ public final class FieldInfo { diff --git a/src/main/javassist/bytecode/MethodInfo.java b/src/main/javassist/bytecode/MethodInfo.java index df436dda..4b8c1c4d 100644 --- a/src/main/javassist/bytecode/MethodInfo.java +++ b/src/main/javassist/bytecode/MethodInfo.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; + import javassist.ClassPool; import javassist.bytecode.stackmap.MapMaker; @@ -30,9 +31,25 @@ import javassist.bytecode.stackmap.MapMaker; * * <p>The bytecode sequence of the method is represented * by a <code>CodeAttribute</code> object. + * + * <p>The following code adds the default constructor to a class: + * of <code>int</code> type: + * <blockquote><pre> + * ClassFile cf = ... + * Bytecode code = new Bytecode(cf.getConstPool()); + * code.addAload(0); + * code.addInvokespecial("java/lang/Object", MethodInfo.nameInit, "()V"); + * code.addReturn(null); + * code.setMaxLocals(1); + * + * MethodInfo minfo = new MethodInfo(cf.getConstPool(), MethodInfo.nameInit, "()V"); + * minfo.setCodeAttribute(code.toCodeAttribute()); + * cf.addMethod(minfo); + * </pre></blockquote> * * @see #getCodeAttribute() * @see CodeAttribute + * @see Bytecode * @see javassist.CtMethod#getMethodInfo() * @see javassist.CtConstructor#getMethodInfo() */ |