diff options
author | chiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3> | 2010-07-08 18:17:03 +0000 |
---|---|---|
committer | chiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3> | 2010-07-08 18:17:03 +0000 |
commit | 0dfd78b0e5a50a9f3531d75a8543d8bdf54df24a (patch) | |
tree | 88f3101377e72eac856f81ab895111a27c57d8f1 | |
parent | 066ce8b8722d191874c53870096d3cb2e1056f1d (diff) | |
download | javassist-0dfd78b0e5a50a9f3531d75a8543d8bdf54df24a.tar.gz javassist-0dfd78b0e5a50a9f3531d75a8543d8bdf54df24a.zip |
fixed JIRA JASSIST-122
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@553 30ef5769-5b8d-40dd-aea6-55b5d6557bb3
-rw-r--r-- | src/main/javassist/Modifier.java | 1 | ||||
-rw-r--r-- | tutorial/tutorial3.html | 42 |
2 files changed, 41 insertions, 2 deletions
diff --git a/src/main/javassist/Modifier.java b/src/main/javassist/Modifier.java index 567f1fa5..c1b30d67 100644 --- a/src/main/javassist/Modifier.java +++ b/src/main/javassist/Modifier.java @@ -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; diff --git a/tutorial/tutorial3.html b/tutorial/tutorial3.html index 17e21410..9b281a13 100644 --- a/tutorial/tutorial3.html +++ b/tutorial/tutorial3.html @@ -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 |