El ejemplo que se muestra en la descripción de la clase MethodHandle
arroja una WrongMethodTypeException
en la invocación de la declaración mh.invokeExact("daddy",'d','n')
con la siguiente descripción: (CC)Ljava/lang/String; cannot be called with a different arity as ([Ljava/lang/Object;)Ljava/lang/Object;
.ejemplo MethodHandle lanza WrongMethodTypeException en invokeExact llamada
El objeto MethodHandle
mh
tiene un descriptor de tipo simbólico que corresponde a: (CC)Ljava/lang/String
. Pero cuando invocamos mh.invokeExact("daddy",'d','n')
, los argumentos: d
y n
se pasan como una matriz Object
y luego no coinciden con los argumentos del tipo char
.
sé que puedo resolver el problema anterior mediante el invokeWithArguments
en lugar de la invokeExcat
o la invoke
, pero este ejemplo se supone que el trabajo que se presenta en la descripción de la MethodHandle
de Java 7 API. Además de eso, el invokeWithArguments
tiene una sobrecarga de rendimiento en relación con invoke
/invokeExact
.
Al ver este error también con OpenJDK 1.7.0_07 en Linux con el código [de este ejemplo] (http://stackoverflow.com/questions/14146570/calling-a-getter- in-java-though-reflection-whats-the-fastest-way-to-repeated) –