Использование постоянной времени компиляции в случае коммутации 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»скомпилировать постоянную времени?