Учитывая этот код:
MethodType mt = MethodType.methodType(void.class, DomainObject.class);
NOOP_METHOD = RULE_METHOD_LOOKUP.findVirtual(RulesEngine.class, "noOpRule", mt);
, полученный NOOP_METHOD равен
MethodHandle(RulesEngine,DomainObject)void
Почему существует этот первый параметр, который вызывает сбои при его вызове, например
mh.invoke(domainObject);
как сообщение об ошибке:
java.lang.invoke.WrongMethodTypeException: cannot convert MethodHandle(RulesEngine,DomainObject)void to (DomainObject)void
Вот метод, о котором идет речь:
public void noOpRule(DomainObject d) {
}