class文件的常量池类型标识不连续的问题
请问java 的class文件的常量池的Constant Type为什么没有值为2的tag?
是有什么特别的用处吗?
确实,看Java SE 7版的JVM规范,里面对常量池项的tag的定义是:
tag值的范围是[1, 3-12, 15-16, 18]
可以看到中间没有2、13、14、17。
其实这些空缺的号码都曾经存在,但随着研发过程的推进发现它们的设计不够合理,为了避免兼容性问题,直接把这些号码废除掉,然后向后使用更大的号码来放新类型。
在JVM规范的早期版本的草案里是有tag值为2...
转载
2021-05-12 09:15:50 ·
214 阅读 ·
0 评论