Почему отдельные теги используются для строк, целых чисел, чисел с плавающей точкой и т. Д. В постоянном пуле
В постоянном определении пула, в соответствии со спецификацией, почему требуется иметь CONSTANT_String, CONSTANT_Integer, ... в качестве отдельного и уникального тега?
почему эти теги не могут рассматриваться как тег CONSTANT_Class, как и все другие классы?
Это только потому, что это системные классы? но если так, есть другие системные классы, кроме упомянутых.
читайте здесь: https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html
1 ответ
Потому что это ценности, а не классы.
CONSTANT_Class
тег используется в структуре CONSTANT_Class_info "для представления класса или интерфейса", т. е. класса, а не экземпляров класса.
CONSTANT_String
тег используется для представления строкового значения, например "foo"
, а не String
учебный класс.