Я знаю, что переменная, объявленная как это:Почему конечные переменные не являются константами Java?
public class Example {
public static final int MY_CONSTANT = 10;
}
считается константой Java. Я не понимаю, почему переменная, объявленная только final, не может считаться константой?
_I действительно не понимаю, почему переменная, объявленная только окончательно, не может считаться константой. Вы просите, а не меняете с помощью 'static'? Или не инициализирован при объявлении? Можете ли вы уточнить, в каком случае вы не думаете, что это считается константой? И вы имеете в виду _constant_ как неизменный или вы имеете в виду _constant_ как в _constant expression_, как определено в JLS? –
Я отметил это как дубликат другого вопроса, так как вы задаете точно такой же вопрос, но я должен сказать, что ответы там довольно неудовлетворительны. В частности, [JLS] (https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.12.4) говорит: «Постоянная переменная является конечной переменной примитивный тип или тип String, который инициализируется константным выражением (§15.28). ", в котором не упоминается' static'. –
@ Энди Тернер: Да, даже локальные переменные могут быть константами. Если вы хотите повеселиться, вы можете использовать такие локальные константы, как 'case' label в инструкции' switch', или ссылаться на них в аннотации локального 'class' ... – Holger