Это одна из особенностей языка, которые я не люблю: ссылки на константы резолвятся во время компиляции (JLS 13.1). Из-за этого большие проекты приходится перекомпилировать целиком, чтобы не наступить на грабли.
Однако в этой головоломке скрыта другая. Одна из констант в первом классе -
null
, а согласно JLS 15.28: null
не является константой во время компиляции и ссылка на неё резолвится во время исполнения.Обратите внимание, что enum-константы, введённые в Java 5, не являются константами времени компиляции, т.е. не надо перекомпилировать классы, использующие эти enum-константы, если они поменяются.
Для всех бы констант так!
Комментариев нет:
Отправить комментарий