本文翻译自:http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.9
一个方法是签名多态性方法,当且仅当满足以下条件:
- 在java.lang.invoke.MethodHandle class中声明。
- 具有唯一的形参:Object[]。
- 返回值类型为Object。
- 设置了
ACC_VARARGS
和ACC_NATIVE
标记。
在Java SE7中,唯一的签名多态性方法是MethodHandle 中的invoke and invokeExact。
在JVM中的为了对一个method handle的调用施加影响,invokevirtual指令对签名多态性方法进行了特殊的处理。一个method handle是一个类型化的,可以直接执行的引用,这个引用指向一些底层方法,或者构造函数,或者字段或类似的底层操作,并且带有可选的返回值和参数的转换。这些转换非常一般,如:conversion, insertion, deletion, and substitution。