簡體   English   中英

為什么Java類文件格式缺少常量池標簽2?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM