Bri*_*new 14
要回答这个问题,特别是在虚拟机中如何实现覆盖,可以在Java虚拟机编程(Google Books链接)中进行编写.
VM将在引用的类中查找适当的方法定义,然后通过继承堆栈向上工作.显然,在某些阶段,将适用各种优化措施.
有关相关字节码指令的说明,请参见此处invokevirtual:
invokevirtual查看给定的描述符,并确定该方法采用的参数数量(这可能为零).它将这些参数从操作数堆栈中弹出.接下来,它将objectref从堆栈中弹出.objectref是对正在调用其方法的对象的引用.invokevirtual检索objectref的Java类,并搜索该类定义的方法列表,然后查找其超类,查找名为methodname的方法,该方法的描述符是描述符.
正如gustafc在下面强调的那样,可以应用各种优化,毫无疑问,JIT将进一步引入.
| 归档时间: |
|
| 查看次数: |
2352 次 |
| 最近记录: |