Kompilieren Sie die Verwendung der Zeitkonstanten in Switch Case Java

Die Regeln voncase Verwendung sagen:

Der case-Ausdruck muss a ergebenCompile Time Constant.

case (t) -Ausdruck muss den gleichen Typ wie switch (t) haben, wobei t der Typ (String) ist.

Wenn ich diesen Code ausführe:

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

}

Es gibt Compile-Fehler als:"case expression must be a constant expression" Andererseits, wenn ich es mit probierefinal String s="abc";, es funktioniert gut.

Nach meinem WissenString s=new String("abc") ist ein Verweis auf aString Objekt befindet sich auf Haufen. Unds selbst ist eine Konstante zur Kompilierungszeit.

Bedeutet es das?final String s=new String("abc");Ist die Kompilierzeit nicht konstant?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage