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?