关于InvokeVirtual的所有者

问题描述 投票:-3回答:1

为什么右红色下划线的字节代码不是PrintStream的所有者

enter image description here

java bytecode java-bytecode-asm
1个回答
0
投票
由于引用了原始声明的方法,所以toString方法由Objecthttps://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#toString())定义,PrintStream会覆盖它。在字节码中,它始终是该方法的所有者。最后,每个invokevirtual都需要通过从实际类型到尽可能低的位置来找到方法的实际实现。

https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.invokevirtual

© www.soinside.com 2019 - 2024. All rights reserved.