JDK1.7之后,加入的java.lang.invoke包,该包提供了一种新的确定动态目标方法的机制,Method Handle. Method Handle使得Java拥有了类似函数指针或委托的方法别名的工具。
MethodHandle方法 | 字节码 | 描述 |
---|---|---|
findStatic | invokestatic | 调用静态方法 |
findSpecial | invokespecial | 调用实例构造方法,私有方法,父类方法。 |
findVirtual | invokevirtual | 调用所有的虚方法 |
findVirtual | invokeinterface | 调用接口方法,会在运行时再确定一个实现此接口的对象。 |
MethodHandle用于模拟invokespecial时,必须遵守跟Java字节码里的invokespecial指令相同的限制——它只能调用到传给findSpecial()方法的最后一个参数(“specialCaller”)的直接父类的版本