package org.kantega.helloworld.methodhandles; import org.junit.Test; /** * */ public class MethodHandlesTest { public static int shiftIndex(int originalIndex, int amount) { return originalIndex+amount; } @Test public void testHandler() throws Throwable { /* MethodHandles.Lookup lookup = MethodHandles.lookup(); MethodHandle toUpperCase = lookup.findVirtual(String.class, "toUpperCase", MethodType.methodType(String.class)); String result = (String) toUpperCase.invokeExact("eirik"); System.out.println(result); MethodHandle arraySetter = MethodHandles.arrayElementSetter(long[].class); MethodHandle filterTarget = lookup.findStatic(MethodHandlesTest.class, "shiftIndex", MethodType.methodType(int.class, int.class, int.class)); MethodHandle insert = MethodHandles.insertArguments(filterTarget, 1, 2); MethodHandle shiftingHandle = MethodHandles.filterArguments(arraySetter, 1, insert); long[] array = new long[3]; shiftingHandle.invokeExact(array, 0, 2l); System.out.println(Arrays.toString(array)); */ } }