报告不匹配任何方法或字段的 MethodHandleVarHandle 工厂方法调用。

也报告不匹配 MethodHandle 签名的 MethodHandle.invoke() 和类似方法的实参以及不匹配 VarHandle 类型的 VarHandle.set() 的实参

示例:

  MethodHandle mh = MethodHandles.lookup().findVirtual(
      MyClass.class, "foo", MethodType.methodType(void.class, int.class));
  // 此实参应为 int
  mh.invoke(myObj, "abc");

  // 此实参应为 String.class
  VarHandle vh = MethodHandles.lookup().findVarHandle(
      MyClass.class, "text", int.class);

  VarHandle vh = MethodHandles.lookup().findVarHandle(
      MyClass.class, "text", String.class);
  // 此实参应为 String
  vh.set(myObj, 42);

2017.2 最新变化