在常量池定义中,根据规范,为什么需要具有constant_String、constant_Integer。。。作为单独和唯一的标签?
为什么这些标签不能像所有其他类一样被视为CONSTANT_Class标签?
只是因为这些是系统类吗?但如果是这样的话,还有其他系统类。
阅读此处:https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.4
因为它们是值,而不是类。
CONSTANT_Class
标记在CONSTANT_Class_info结构中用于"表示类或接口",即类,而不是类的实例。
CONSTANT_String
标签用于表示字符串值,例如"foo"
,而不是String
类。