Wyrażenia stałe w javie

0

final String KOT = "kot";
final String PIES = new String("pies");
case KOT + PIES:

Dlaczego to wyrażenie nie jest traktowane jako constant expression ? Przecież zmienna PIES jest finalna a Stringi niemutowalne więc nie da sie zmienic stanu obiektu ?

2

String jest compile time constant tylko wtedy gdy jest inicjalizowany literałem, tak jak KOT w tym przypadku.
https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.28

1 użytkowników online, w tym zalogowanych: 0, gości: 1