1*f1fbf3c2SXin Li package test4; 2*f1fbf3c2SXin Li 3*f1fbf3c2SXin Li import java.lang.invoke.*; 4*f1fbf3c2SXin Li 5*f1fbf3c2SXin Li public class InvokeDyn { test9(int i, String s)6*f1fbf3c2SXin Li public static int test9(int i, String s) { return 9; } test8(int i, String s)7*f1fbf3c2SXin Li public int test8(int i, String s) { return 8; } 8*f1fbf3c2SXin Li boot(MethodHandles.Lookup caller, String name, MethodType type)9*f1fbf3c2SXin Li public static CallSite boot(MethodHandles.Lookup caller, String name, MethodType type) 10*f1fbf3c2SXin Li throws NoSuchMethodException, IllegalAccessException 11*f1fbf3c2SXin Li { 12*f1fbf3c2SXin Li MethodHandles.Lookup lookup = MethodHandles.lookup(); 13*f1fbf3c2SXin Li Class thisClass = lookup.lookupClass(); 14*f1fbf3c2SXin Li MethodHandle method = lookup.findStatic(thisClass, "test9", MethodType.methodType(int.class, int.class, String.class)); 15*f1fbf3c2SXin Li return new ConstantCallSite(method); 16*f1fbf3c2SXin Li } 17*f1fbf3c2SXin Li boot2(MethodHandles.Lookup caller, String name, MethodType type)18*f1fbf3c2SXin Li public CallSite boot2(MethodHandles.Lookup caller, String name, MethodType type) 19*f1fbf3c2SXin Li throws NoSuchMethodException, IllegalAccessException 20*f1fbf3c2SXin Li { 21*f1fbf3c2SXin Li MethodHandles.Lookup lookup = MethodHandles.lookup(); 22*f1fbf3c2SXin Li Class thisClass = lookup.lookupClass(); 23*f1fbf3c2SXin Li MethodHandle method = lookup.findVirtual(thisClass, "test8", MethodType.methodType(int.class, int.class, String.class)); 24*f1fbf3c2SXin Li return new ConstantCallSite(method.asType(MethodType.methodType(int.class, Object.class, int.class, String.class))); 25*f1fbf3c2SXin Li } 26*f1fbf3c2SXin Li } 27