我想知道为什么下面的字节码(用于抛出异常)中的异常是重复的。
NEW java/lang/IllegalArgumentException
DUP
INVOKESPECIAL java/lang/IllegalArgumentException <init> ()V
ATHROW发布于 2012-09-15 23:23:54
我将逐行分析这段代码,其中[] =使用该操作后的新堆栈:
init SomeIllegalArgumentException
发布于 2012-09-15 23:22:48
在字节码中,对象首先由类创建,然后在该对象上调用构造函数。构造函数的签名以void的V结尾,因为它返回任何内容。这意味着对象的原始引用的副本必须保留在堆栈上(或在变量中),以便可以在调用构造函数后抛出。
顺便说一下,构造函数的内部名称是<init>,静态初始化器代码的内部名称是<clinit>
https://stackoverflow.com/questions/12438567
复制相似问题