Использование постоянной времени компиляции в случае коммутации Java

Правилаcase Использование говорят:

Выражение регистра должно быть равно.Compile Time Constant

Выражение case (t) должно иметь тот же тип, что и у switch (t), где t - это тип (String).

Если я запускаю этот код:

public static void main(String[] args) {
    final String s=new String("abc");
    switch(s)
    {
       case (s):System.out.println("hi");
    }

}

Это дает ошибку компиляции как:"case expression must be a constant expression" С другой стороны, если я попробую это сfinal String s="abc";работает нормально.

Насколько мне известно,String s=new String("abc") это ссылка наString Объект расположен на куче. А такжеs сама по себе является постоянной времени компиляции.

Означает ли это, чтоfinal String s=new String("abc");ISN»скомпилировать постоянную времени?

Ответы на вопрос(6)

Ваш ответ на вопрос