下面列出了怎么用java.lang.invoke.MethodHandleProxies的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
public static void testDefaultMethods() throws Throwable {
MethodHandle target = MethodHandles.constant(String.class, "F");
C proxy = MethodHandleProxies.asInterfaceInstance(C.class, target);
assertEquals(proxy.f(), "F");
assertEquals(proxy.a(), "A");
assertEquals(proxy.b(), "B");
assertEquals(proxy.c(), "C");
assertEquals(proxy.concat(), "ABC");
}
@Test
public static void testOverriddenDefaultMethods() throws Throwable {
MethodHandle target = MethodHandles.constant(String.class, "F");
Override proxy = MethodHandleProxies.asInterfaceInstance(Override.class, target);
assertEquals(proxy.a(), "OA");
assertEquals(proxy.b(), "OB");
assertEquals(proxy.c(), "OC");
}
@Test
public static void testDefaultMethods() throws Throwable {
MethodHandle target = MethodHandles.constant(String.class, "F");
C proxy = MethodHandleProxies.asInterfaceInstance(C.class, target);
assertEquals(proxy.f(), "F");
assertEquals(proxy.a(), "A");
assertEquals(proxy.b(), "B");
assertEquals(proxy.c(), "C");
assertEquals(proxy.concat(), "ABC");
}
@Test
public static void testOverriddenDefaultMethods() throws Throwable {
MethodHandle target = MethodHandles.constant(String.class, "F");
Override proxy = MethodHandleProxies.asInterfaceInstance(Override.class, target);
assertEquals(proxy.a(), "OA");
assertEquals(proxy.b(), "OB");
assertEquals(proxy.c(), "OC");
}
@Test
public static void testDefaultMethods() throws Throwable {
MethodHandle target = MethodHandles.constant(String.class, "F");
C proxy = MethodHandleProxies.asInterfaceInstance(C.class, target);
assertEquals(proxy.f(), "F");
assertEquals(proxy.a(), "A");
assertEquals(proxy.b(), "B");
assertEquals(proxy.c(), "C");
assertEquals(proxy.concat(), "ABC");
}
@Test
public static void testOverriddenDefaultMethods() throws Throwable {
MethodHandle target = MethodHandles.constant(String.class, "F");
Override proxy = MethodHandleProxies.asInterfaceInstance(Override.class, target);
assertEquals(proxy.a(), "OA");
assertEquals(proxy.b(), "OB");
assertEquals(proxy.c(), "OC");
}
/**
* MethodHandleProxies will add qualified export of sun.invoke from java.base
* to a dynamic module
*/
@Test
public static void testRunnableMethodHandle() throws Exception {
MethodHandles.Lookup lookup = MethodHandles.lookup();
MethodType mt = MethodType.methodType(void.class);
MethodHandle mh = lookup.findStatic(ProxyForMethodHandle.class, "runForRunnable", mt);
Runnable proxy = MethodHandleProxies.asInterfaceInstance(Runnable.class, mh);
proxy.run();
Class<?> proxyClass = proxy.getClass();
Module target = proxyClass.getModule();
assertDynamicModule(target, proxyClass.getClassLoader(), proxyClass);
}
@Test
public static void testDefaultMethods() throws Throwable {
MethodHandle target = MethodHandles.constant(String.class, "F");
C proxy = MethodHandleProxies.asInterfaceInstance(C.class, target);
assertEquals(proxy.f(), "F");
assertEquals(proxy.a(), "A");
assertEquals(proxy.b(), "B");
assertEquals(proxy.c(), "C");
assertEquals(proxy.concat(), "ABC");
}
@Test
public static void testOverriddenDefaultMethods() throws Throwable {
MethodHandle target = MethodHandles.constant(String.class, "F");
Override proxy = MethodHandleProxies.asInterfaceInstance(Override.class, target);
assertEquals(proxy.a(), "OA");
assertEquals(proxy.b(), "OB");
assertEquals(proxy.c(), "OC");
}
public void testProxy() throws NoSuchMethodException, IllegalAccessException {
MethodHandle m = MethodHandles.lookup().findStatic(MHProxiesTest.class, "m",
MethodType.methodType(Byte.class, int.class));
Sam s = MethodHandleProxies.asInterfaceInstance(Sam.class, m);
assertEquals(66d, s.m(66));
}
public void testProxy() throws NoSuchMethodException, IllegalAccessException {
MethodHandle m = MethodHandles.lookup().findStatic(MHProxiesTest.class, "m",
MethodType.methodType(Byte.class, int.class));
Sam s = MethodHandleProxies.asInterfaceInstance(Sam.class, m);
assertEquals(66d, s.m(66));
}
public void testProxy() throws NoSuchMethodException, IllegalAccessException {
MethodHandle m = MethodHandles.lookup().findStatic(MHProxiesTest.class, "m",
MethodType.methodType(Byte.class, int.class));
Sam s = MethodHandleProxies.asInterfaceInstance(Sam.class, m);
assertEquals(66d, s.m(66));
}
public void testProxy() throws NoSuchMethodException, IllegalAccessException {
MethodHandle m = MethodHandles.lookup().findStatic(MHProxiesTest.class, "m",
MethodType.methodType(Byte.class, int.class));
Sam s = MethodHandleProxies.asInterfaceInstance(Sam.class, m);
assertEquals(66d, s.m(66));
}
public void testProxy() throws NoSuchMethodException, IllegalAccessException {
MethodHandle m = MethodHandles.lookup().findStatic(MHProxiesTest.class, "m",
MethodType.methodType(Byte.class, int.class));
Sam s = MethodHandleProxies.asInterfaceInstance(Sam.class, m);
assertEquals(66d, s.m(66));
}
public void testProxy() throws NoSuchMethodException, IllegalAccessException {
MethodHandle m = MethodHandles.lookup().findStatic(MHProxiesTest.class, "m",
MethodType.methodType(Byte.class, int.class));
Sam s = MethodHandleProxies.asInterfaceInstance(Sam.class, m);
assertEquals(66d, s.m(66));
}
public void testProxy() throws NoSuchMethodException, IllegalAccessException {
MethodHandle m = MethodHandles.lookup().findStatic(MHProxiesTest.class, "m",
MethodType.methodType(Byte.class, int.class));
Sam s = MethodHandleProxies.asInterfaceInstance(Sam.class, m);
assertEquals(66d, s.m(66));
}
public void testProxy() throws NoSuchMethodException, IllegalAccessException {
MethodHandle m = MethodHandles.lookup().findStatic(MHProxiesTest.class, "m",
MethodType.methodType(Byte.class, int.class));
Sam s = MethodHandleProxies.asInterfaceInstance(Sam.class, m);
assertEquals(66d, s.m(66));
}
public void testProxy() throws NoSuchMethodException, IllegalAccessException {
MethodHandle m = MethodHandles.lookup().findStatic(MHProxiesTest.class, "m",
MethodType.methodType(Byte.class, int.class));
Sam s = MethodHandleProxies.asInterfaceInstance(Sam.class, m);
assertEquals(66d, s.m(66));
}
public void testProxy() throws NoSuchMethodException, IllegalAccessException {
MethodHandle m = MethodHandles.lookup().findStatic(MHProxiesTest.class, "m",
MethodType.methodType(Byte.class, int.class));
Sam s = MethodHandleProxies.asInterfaceInstance(Sam.class, m);
assertEquals(66d, s.m(66));
}
public void testProxy() throws NoSuchMethodException, IllegalAccessException {
MethodHandle m = MethodHandles.lookup().findStatic(MHProxiesTest.class, "m",
MethodType.methodType(Byte.class, int.class));
Sam s = MethodHandleProxies.asInterfaceInstance(Sam.class, m);
assertEquals(66d, s.m(66));
}
public void testProxy() throws NoSuchMethodException, IllegalAccessException {
MethodHandle m = MethodHandles.lookup().findStatic(MHProxiesTest.class, "m",
MethodType.methodType(Byte.class, int.class));
Sam s = MethodHandleProxies.asInterfaceInstance(Sam.class, m);
assertEquals(66d, s.m(66));
}
public void testProxy() throws NoSuchMethodException, IllegalAccessException {
MethodHandle m = MethodHandles.lookup().findStatic(MHProxiesTest.class, "m",
MethodType.methodType(Byte.class, int.class));
Sam s = MethodHandleProxies.asInterfaceInstance(Sam.class, m);
assertEquals(66d, s.m(66));
}