어떠한 메서드 또는 필드와도 일치하지 않는 MethodHandleVarHandle factory 메서드 호출을 보고합니다.

또한 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의 새로운 기능