Browse Source

fixed JIRA JASSIST-122

git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@553 30ef5769-5b8d-40dd-aea6-55b5d6557bb3
tags/rel_3_17_1_ga
chiba 14 years ago
parent
commit
0dfd78b0e5
2 changed files with 41 additions and 2 deletions
  1. 1
    0
      src/main/javassist/Modifier.java
  2. 40
    2
      tutorial/tutorial3.html

+ 1
- 0
src/main/javassist/Modifier.java View File

@@ -35,6 +35,7 @@ public class Modifier {
public static final int FINAL = AccessFlag.FINAL;
public static final int SYNCHRONIZED = AccessFlag.SYNCHRONIZED;
public static final int VOLATILE = AccessFlag.VOLATILE;
public static final int VARARGS = AccessFlag.VARARGS;
public static final int TRANSIENT = AccessFlag.TRANSIENT;
public static final int NATIVE = AccessFlag.NATIVE;
public static final int INTERFACE = AccessFlag.INTERFACE;

+ 40
- 2
tutorial/tutorial3.html View File

@@ -24,7 +24,9 @@

<p><a href="#generics">6. Generics</a>

<p><a href="#j2me">7. J2ME</a>
<p><a href="#varargs">7. Varargs</a>

<p><a href="#j2me">8. J2ME</a>

<p><br>

@@ -294,7 +296,43 @@ public Object get() { return value; }

<p><br>

<h2><a name="j2me">7. J2ME</a></h2>
<h2><a name="varargs">7. Varargs</a></h2>

<p>Currently, Javassist does not directly support varargs. So to make a method with varargs,
you must explicitly set a method modifier. But this is easy.
Suppose that now you want to make the following method:

<ul><pre>
public int length(int... args) { return args.length; }
</pre></ul>

<p>The following code using Javassist will make the method shown above:

<ul><pre>
CtClass cc = /* target class */;
CtMethod m = CtMethod.make("public int length(int[] args) { return args.length; }", cc);
m.setModifiers(m.getModifiers() | Modifier.VARARGS);
cc.addMethod(m);
<pre></ul>

<p>The parameter type <code>int...</code> is changed into <code>int[]</code>
and <code>Modifier.VARARGS</code> is added to the method modifiers.

<p>To call this method, you must write:

<ul><pre>
length(new int[] { 1, 2, 3 });
</pre></ul>

<p>instead of this method call using the varargs mechanism:

<ul><pre>
length(1, 2, 3);
</pre></ul>

<p><br>

<h2><a name="j2me">8. J2ME</a></h2>

<p>If you modify a class file for the J2ME execution environment,
you must perform <it>preverification</it>. Preverifying is basically

Loading…
Cancel
Save