Cur*_*ner 4 java jvm .class-file
从JVM规范(第4.1章 “ ClassFile结构”)中可以看出,“ constant_pool表从1索引到constant_pool_count-1”。
我很好奇为什么他们跳过[0],并且该条目保留什么。
他们跳过了索引0,因此可以将其用于通常引用常量池条目而又想表示“无”的情况。它等于空指针的常量池。
索引0的最显着用途是用于“捕获所有”异常处理程序。异常处理程序可以指向要处理的异常类的常量池条目,也可以仅使用索引0捕获所有内容(这相当于catch java/lang/Throwable)。在实践中,编译器将产生捕获所有异常的处理来实现finally,synchronized块,并尝试与资源清理部分,除其他事项外。
索引0的其他用途包括:
java/lang/Object