gpt4 book ai didi

java - 为什么 Java 类文件格式缺少常量池标记 2?

转载 作者:行者123 更新时间:2023-12-04 13:23:04 24 4
gpt4 key购买 nike

Java 1.0.2 的 JVM 规范列出了以下常量池条目类型:

+-----------------------------+-------+
| Constant Type | Value |
+-----------------------------+-------+
| CONSTANT_Class | 7 |
| CONSTANT_Fieldref | 9 |
| CONSTANT_Methodref | 10 |
| CONSTANT_InterfaceMethodref | 11 |
| CONSTANT_String | 8 |
| CONSTANT_Integer | 3 |
| CONSTANT_Float | 4 |
| CONSTANT_Long | 5 |
| CONSTANT_Double | 6 |
| CONSTANT_NameAndType | 12 |
| CONSTANT_Utf8 | 1 |
+-----------------------------+-------+

随后的 JVM 规范添加了更多常量池条目类型,但从未填补“2”位置。为什么那里有空隙?

最佳答案

我做了一些研究,发现了一些线索,对于常量池标签 2,它似乎在 Constant_Unicode 下保持开放但从未被使用过,因为 UTF-8 已经存在,并且 UTF-8 被广泛采用,所以如果有用 unicode 写的常量,UTF-8 可以处理它,UTF-8 比其他编码方案有很多优势,所以我想这个历史事实可以解释为什么缺少 2,我想它可以被重用必要时用于其他目的。

这里的一些陈述: https://bugs.openjdk.java.net/browse/JDK-8161256

对于13、14,应该有不同的具体原因,为什么它被打开但没有被使用。

关于java - 为什么 Java 类文件格式缺少常量池标记 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46653615/

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