为什么 Java class 文件格式缺少常量池标记 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,应该有不同的具体原因,为什么它被打开但没有被使用。