Пример, показанный в описании MethodHandle
класса бросает в вызове заявления mh.invokeExact("daddy",'d','n')
с нижеследующим описанием в WrongMethodTypeException
: (CC)Ljava/lang/String; cannot be called with a different arity as ([Ljava/lang/Object;)Ljava/lang/Object;
.MethodHandle пример бросает WrongMethodTypeException на invokeExact вызова
MethodHandle
объект mh
имеет дескриптор символического типа, соответствующий: (CC)Ljava/lang/String
. Но когда мы вызываем mh.invokeExact("daddy",'d','n')
, аргументы: d
и n
передаются как массив Object
, а затем они не соответствуют аргументам типа char
.
Я знаю, что я могу решить данную проблему с помощью invokeWithArguments
вместо invokeExcat
или invoke
, но этот пример должен был работать, как представлено в описании MethodHandle
в Java 7 API. Кроме того, invokeWithArguments
имеет служебные служебные данные по отношению к invoke
/invokeExact
.
Видя эту ошибку тоже с OpenJDK 1.7.0_07 на Linux с кодом [этого примера] (http://stackoverflow.com/questions/14146570/calling-a-getter- в-Java-хотя-отражательного Что-The-быстро путь к многократно) –