MethodHandler这个类有点特殊
首先,任何一个方法能够具有多样化的声明(signature polymorphic)必须满足以下条件:
1)它声明为 java.lang.invoke.MethodHandler类
2)参数格式只能为 Object[]
3)有一个Object类型的返回值
4)设置了ACC_VARARGS和ACC_NATIVE标识。
java虚拟机赋予指令 invokevirtual来调用方法句柄(method handle)。
方法句柄 是一种特殊的类型,可以直接通过引用来执行方法、或者构造函数、或全局变量、或低位的操作,以及方法的参数或者返回值。
因此,MethodHandler这个类是java反射机制的主要的类,在JVM内部,通过指令invokevirtual来激活方法句柄,从而实现方法句柄
通过引用获取类实例以及类和方法信息的一个方式。
本文介绍了java.lang.invoke.MethodHandler类及其在Java反射机制中的作用。要成为一个具有签名多态性的方法,必须满足特定条件。此外,文章还探讨了如何通过方法句柄直接执行方法,并解释了这些句柄如何被java虚拟机通过invokevirtual指令激活。
13万+

被折叠的 条评论
为什么被折叠?



