aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/javassist/bytecode
diff options
context:
space:
mode:
authorchibash <chiba@javassist.org>2015-02-04 01:20:21 +0900
committerchibash <chiba@javassist.org>2015-02-04 01:20:21 +0900
commitc43f4a7cde41d04095feb027f33f3ab4da7248bd (patch)
treebada37243778b56128ca3b505685e8d49224d5a3 /src/main/javassist/bytecode
parente59339343a538699b632bd9fa0cf4f251ab6f3ee (diff)
downloadjavassist-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.java29
-rw-r--r--src/main/javassist/bytecode/ConstPool.java12
-rw-r--r--src/main/javassist/bytecode/FieldInfo.java9
-rw-r--r--src/main/javassist/bytecode/MethodInfo.java17
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()
*/