¿Por qué es la piscina constante (en el archivo de clase Java) en un índice de 1 (no 0)? ¿Cuál es el constant_pool [0] entrada reservada para?

Estudiantes de curiosidad:

De la JVM espec ( Capítulo 4.1 "La estructura de archivo de clase"), se afirma que "La tabla está indexada constant_pool de 1 a constant_pool_count - 1."

Tengo curiosidad por qué están faltando a [0] y cuál es esta entrada reservada para.

antimonio:

Dejaron el índice 0 para que pueda ser utilizado para los casos en que normalmente hacen referencia a un conjunto de constantes de entrada, sino que desea indicar "nada". Es el conjunto de constantes equivalente de un puntero nulo.

El uso más notable por el índice 0 es para "capturar" todos los controladores de excepciones. Un manejador de excepciones pueden indicar tanto a la entrada del grupo de constantes para la clase de excepciones que quiere manejar, o el índice solo uso 0 a detener todo (esto es equivalente a la captura java/lang/Throwable). En la práctica, el compilador generará captura todos los controladores de excepciones para poner en práctica finally, synchronizedbloques, y las porciones de limpieza de intentarlo con los recursos, entre otras cosas.

Otros usos para el índice 0 incluyen:

  • La superclase de java/lang/Object
  • El nombre de un parámetro sin nombre
  • La clase externa para clases que no son el miembro de otra clase (es decir, las clases de nivel superior, clases locales, y clases anónimas)
  • El nombre interno de las clases anónimas
  • El método que encierra para las clases que no están encerrados en un método de inmediato
  • información de versión de un módulo con ninguna información de la versión
  • Dependencias de un módulo con ninguna información de dependencia

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=226825&siteId=1
Recomendado
Clasificación