Doc of MethodHandles.dropArguments.
Rémi Forax
forax at univ-mlv.fr
Thu Jun 4 07:36:22 PDT 2009
The example provided in the doc of MethodHandles.dropArgument
seems to contains some mistakes:
MethodHandle cat = MethodHandles.lookup().
findVirtual(String.class, "concat", String.class, String.class);
System.out.println(cat.<String>invoke("x", "y")); // xy
MethodHandle d0 = dropArguments(cat, 0, String.class);
System.out.println(d0.<String>invoke("x", "y", "z")); // xy
why 'xy' ?
drop 0 means remove the first argument, so the result is 'yz'.
MethodHandle d1 = dropArguments(cat, 1, String.class);
System.out.println(d1.<String>invoke("x", "y", "z")); // xz
MethodHandle d2 = dropArguments(cat, 2, String.class);
System.out.println(d2.<String>invoke("x", "y", "z")); // yz
why 'yz' ?
drop 2 means remove the third argument, here 'z'
so the correct answer is 'xy'
MethodHandle d12 = dropArguments(cat, 1, String.class, String.class);
System.out.println(d12.<String>invoke("w", "x", "y", "z")); // wz
cheers,
Rémi
More information about the mlvm-dev
mailing list