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 _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev