Browse Source

updated the tutorial and some javadoc comments

tags/rel_3_20_0_ga
chibash 9 years ago
parent
commit
e724bc8af9
4 changed files with 51 additions and 3 deletions
  1. 5
    0
      src/main/javassist/CtClass.java
  2. 1
    1
      tutorial/tutorial.html
  3. 1
    1
      tutorial/tutorial2.html
  4. 44
    1
      tutorial/tutorial3.html

+ 5
- 0
src/main/javassist/CtClass.java View File

@@ -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()

+ 1
- 1
tutorial/tutorial.html View File

@@ -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>

+ 1
- 1
tutorial/tutorial2.html View File

@@ -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>

+ 44
- 1
tutorial/tutorial3.html View File

@@ -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>

Loading…
Cancel
Save