summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/javassist/CtClass.java5
-rw-r--r--tutorial/tutorial.html2
-rw-r--r--tutorial/tutorial2.html2
-rw-r--r--tutorial/tutorial3.html45
4 files changed, 51 insertions, 3 deletions
diff --git a/src/main/javassist/CtClass.java b/src/main/javassist/CtClass.java
index fc828847..0fca3ff7 100644
--- a/src/main/javassist/CtClass.java
+++ b/src/main/javassist/CtClass.java
@@ -463,6 +463,11 @@ public abstract class CtClass {
* and the methods so that the type variable <code>T</code> can be
* accessible through reflection.
*
+ * <p><code>MethodSignature</code> is a utility class. You can directly
+ * pass the signature string to the <code>setGenericSignature</code> method.
+ * For the specification of the signatures, see Section 4.7.9.1 <i>Signatures</i>
+ * of The Java Virtual Machine Specification (Java SE 8).
+ *
* @param sig a generic signature.
* @see javassist.bytecode.SignatureAttribute.ClassSignature#encode()
* @see javassist.bytecode.SignatureAttribute.MethodSignature#encode()
diff --git a/tutorial/tutorial.html b/tutorial/tutorial.html
index 3a125f08..b8110390 100644
--- a/tutorial/tutorial.html
+++ b/tutorial/tutorial.html
@@ -1100,6 +1100,6 @@ For more information, see the API documentation of
<hr>
Java(TM) is a trademark of Sun Microsystems, Inc.<br>
-Copyright (C) 2000-2014 by Shigeru Chiba, All rights reserved.
+Copyright (C) 2000-2015 by Shigeru Chiba, All rights reserved.
</body>
</html>
diff --git a/tutorial/tutorial2.html b/tutorial/tutorial2.html
index f2571c8b..04afbd9c 100644
--- a/tutorial/tutorial2.html
+++ b/tutorial/tutorial2.html
@@ -1628,6 +1628,6 @@ write:
<hr>
Java(TM) is a trademark of Sun Microsystems, Inc.<br>
-Copyright (C) 2000-2014 by Shigeru Chiba, All rights reserved.
+Copyright (C) 2000-2015 by Shigeru Chiba, All rights reserved.
</body>
</html>
diff --git a/tutorial/tutorial3.html b/tutorial/tutorial3.html
index e6964553..cb2a6b3e 100644
--- a/tutorial/tutorial3.html
+++ b/tutorial/tutorial3.html
@@ -78,6 +78,28 @@ class file. <code>write()</code> in <code>ClassFile</code>
writes the contents of the class file to a given
<code>DataOutputStream</code>.
+<p>You can create a new class file from scratch. 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>
+
+<p>this code generates a class file <code>Foo.class</code> that contains
+the implementation of the following class:
+
+<blockquote><pre>
+package test;
+class Foo implements Cloneable {
+ public int width;
+}
+</pre></blockquote>
+
<p><br>
<a name="member">
@@ -219,6 +241,27 @@ constructed from the <code>Bytecode</code> object.
To recompute the maximum stack depth of a method body,
call <code>computeMaxStack()</code> in <code>CodeAttribute</code>.
+<p><code>Bytecode</code> can be used to construct a method.
+For example,
+
+<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>
+
+<p>this code makes the default constructor and adds it to the class specified
+by <code>cf</code>. The <code>Bytecode</code> object is first converted into
+a <code>CodeAttribute</code> object and then added to the method specified
+by <code>minfo</code>. The method is finally added to a class file <code>cf</code>.
+
<p><br>
<a name="annotation">
@@ -427,6 +470,6 @@ CtClass.debugDump = "./dump";
<hr>
Java(TM) is a trademark of Sun Microsystems, Inc.<br>
-Copyright (C) 2000-2014 by Shigeru Chiba, All rights reserved.
+Copyright (C) 2000-2015 by Shigeru Chiba, All rights reserved.
</body>
</html>