Java 为什么OpenJDK将私有方法放在vtable中?

Java 为什么OpenJDK将私有方法放在vtable中?,java,jvm,bytecode,openjdk,Java,Jvm,Bytecode,Openjdk,似乎将非final或static的私有方法放入vtable。为什么不将动态绑定用于私有方法(因为它们是通过调用的)或者使用了动态绑定呢?这样做是为了处理一些罕见的情况,即超类中存在具有相同名称和签名的可重写方法。虽然JDK9肯定有改进的地方,但可能是 看 私有方法总是得到一个vtable条目来向后处理 与类的兼容性-即,您可以拥有与类相同的名称 私有方法是类的本地方法,并且还继承来自的方法 您的超类将围绕私有方法继承, 你的孩子 你说的“vtable”是什么意思?这不是C++。但是实现类似于C+

似乎将非
final
static
的私有方法放入vtable。为什么不将动态绑定用于私有方法(因为它们是通过调用的)或者使用了动态绑定呢?

这样做是为了处理一些罕见的情况,即超类中存在具有相同名称和签名的可重写方法。虽然JDK9肯定有改进的地方,但可能是

私有方法总是得到一个vtable条目来向后处理 与类的兼容性-即,您可以拥有与类相同的名称 私有方法是类的本地方法,并且还继承来自的方法 您的超类将围绕私有方法继承, 你的孩子


你说的“vtable”是什么意思?这不是C++。但是实现类似于C++,不同的是,当程序由链接器运行时,计算VTABLE。因此,当一个私有方法被调用时,它的VTATE条目永远不会被使用。@ RADKMICEK,这个条目在方法调用中没有使用。我反复思考,仍然没有得到。首先,我不知道应该实现哪种实际行为,其次,我能想象的每一种可能的行为都可以在不向vTable添加
private
方法的情况下实现。据我所知,这是构建vTable的代码所需要的(也许它使代码更简单??),但这纯粹是我的猜测。