Я не смог найти какой-либо конкретный пост SO, относящийся к этому конкретному случаю, поэтому я хотел бы задать вопрос, который, по моему мнению, является вопросом «да/нет».
Вот JLS §12.4.2 (Java SE 8), листинг 6-7:
- [...] Затем инициализируйте статические поля C, которые являются постоянными переменными (§4.12.4, §8.3.2, §9.3.1).
- Далее, если C является классом, а не интерфейсом, и его суперкласс еще не инициализирован, то пусть SC будет его суперклассом [...] Для каждого S в списке [SC, SI1, ..., SIn], рекурсивно выполните всю эту процедуру для S. При необходимости сначала проверьте и подготовьте S. [...]
Мой вопрос: означает ли это, что final static переменная подкласса инициализируется до статической инициализации суперкласса (при условии, что final static инициализируется как часть его объявления)?
final
переменная примитивного типа или типаString
, которая инициализируется с помощью постоянное выражение. 24.08.2016