gpt4 book ai didi

java - 为什么在创建新实例时进行 DUP

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:29 24 4
gpt4 key购买 nike

目前我只是在一个使用 java 字节码的项目中。我通常看到,当创建一个新的类实例并在其上调用一个方法时,字节码将是这样的:

NEW <MyClass>
DUP
INVOKESPECIAL <MyClass.<init>>

这里为什么要做“DUP”?从 VM 规范中,我得到了描述“复制操作数堆栈上的顶部值并将复制的值压入操作数堆栈”。但是为什么在这里需要复制操作数栈的顶部值呢?谢谢。

最佳答案

因为INVOKESPECIAL会从操作数栈中消耗NEW创建的值,但是你可能需要实际使用这个值,所以引用是提前复制的。

关于java - 为什么在创建新实例时进行 DUP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7282585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com