[英]Why is the Java class file format missing constant pool tag 2?
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,它應該有不同的具體原因,為什么它被打開但從未被使用過。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.