1

在常量池定义中,根据规范,为什么需要将 CONSTANT_String, CONSTANT_Integer, ... 作为单独且唯一的标签?

为什么这些标签不能像所有其他类一样被视为 CONSTANT_Class 标签?

仅仅是因为这些是系统类吗?但如果是这样,除了提到的之外,还有其他系统类。

在这里阅读:https ://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.4

4

1 回答 1

2

因为它们是值,而不是类。

CONSTANT_Class标签用于 CONSTANT_Class_info 结构中“表示类或接口”,即类,而不是类的实例。

CONSTANT_String标签用于表示字符串值,例如,而"foo"不是String类。

于 2016-07-29T09:01:31.750 回答