Java-switch-Anweisung, die class.getSimpleName () verwendet, gibt Constant express required error an

8

Ich versuche, class.getSimpleName () für den Ausdruck eines Schalters zu verwenden, aber es gibt mir einen Fehler:

  

Konstante Express erforderlich

Ich habe Antworten gesehen, die vorschlagen, die Ausdruck-Variablendeklarationen so zu ändern, dass sie Initialisierer haben, die kompilierungszeitkonstante Ausdrücke sind. Dies ist jedoch in diesem Fall nicht möglich.

Gibt es eine Möglichkeit, mit class.getSimpleName () einen Wechsel zu machen, ohne die Klassennamen fest codieren zu müssen?

Beispielcode

%Vor%     
fahmy 20.12.2014, 12:48
quelle

1 Antwort

9
  

Gibt es eine Möglichkeit, mit class.getSimpleName () einen Wechsel zu machen, ohne die Klassennamen fest codieren zu müssen?

Nein. Grundsätzlich zählt der Aufruf von Class.getSimpleName() nicht als kompilierbarer Konstantenausdruck, daher kann er nicht als case-Anweisung verwendet werden. Es wäre nett, wenn es einen Operator nameof(...) gäbe, wie es in C # 6 sein wird, aber ohne das, glaube ich nicht, dass Sie einen Schalter / Fall verwenden können, ohne die Namen hart zu kodieren.

>     
Jon Skeet 20.12.2014, 12:50
quelle

Tags und Links