【发布时间】:2012-01-10 12:15:06
【问题描述】:
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 对象mh 有一个符号类型描述符,对应于:(CC)Ljava/lang/String。但是当我们调用mh.invokeExact("daddy",'d','n') 时,参数:d 和n 作为Object 数组传递,然后它们与char 类型的参数不匹配。
我知道我可以使用invokeWithArguments 而不是invokeExcat 或invoke 来解决上述问题,但是这个示例应该按照Java 7 API 的MethodHandle 描述中的说明工作.除此之外,invokeWithArguments 相对于invoke/invokeExact 有性能开销。
【问题讨论】:
标签: java jvm java-7 invokedynamic methodhandle