Для дескриптора поля JVM, зачем использовать Z для логического значения, L для экземпляра класса и J для длинного? - PullRequest
2 голосов
/ 11 марта 2019

Для дескрипторов полей Jvm, как сказано в этой ссылке: https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.3.2

Он использует Z для описания логического типа, J для long и L для экземпляра класса.

Кто-нибудь знает почему?

Я имею в виду, что заметил, что B уже использовал байт, но зачем использовать Z для логического значения?почему бы не использовать L для длинных и R для справки?

1 Ответ

2 голосов
/ 11 марта 2019

Я не уверен, что вы получите авторитетный ответ, однако.

  • J иногда используется в других контекстах, чтобы быть шире I, поскольку это следующая буква (аналогичноH для половины int / short или предыдущей буквы I)
  • L для структуры языковых данных?
  • Z для буквы, которая не будет использоваться ни для чегоостальное.cf Z используется для "Zulu" или времени по Гринвичу в качестве времени по умолчанию.

Кстати, они могли бы использовать b для логического значения, поскольку JVM чувствительна к регистру.

Если вы посмотрите на детали байт-кода, многие варианты кажутся специальными, и в ретроспективе, возможно, было бы сделано лучше, но в то время Java была очень новой и не совсем ясно, что она будет столь же популярной, как и сейчас..

...