Die endgültige öffentliche statische Inten können nicht in einer Switch -Anweisung verwendet werden?

StackOverflow https://stackoverflow.com/questions/1155409

  •  18-09-2019
  •  | 
  •  

Frage

Ich bin verwirrt. Der folgende Code hat Fehler ("..." repräsentiert den elided Code):

int byteOrder = ...;
switch (byteOrder)
{
    case HDF5Constants.H5T_ORDER_BE:
        return ByteOrder.BIG_ENDIAN;
    ...
}

Der Fehler liegt in der Fallanweisung und Eclipse beschwert sich "Fallausdrücke müssen konstante Ausdrücke sein". Ich habe mich in der Quelldatei angesehen und es hat eine lange Liste von Zeilen wie folgt:

final public static int H5T_ORDER_BE = H5.J2C( JH5T_ORDER_BE );

Ich dachte du könntest benutzen final public static int Konstanten als Fälle in einer Switch -Anweisung. Liege ich falsch???

War es hilfreich?

Lösung

Von dem, was Sie gezeigt haben H5T_ORDER_BE ist keine Kompilierungszeitkonstante (die es sein muss) - sie wird zur Laufzeit während der Initialisierung der Klasse bewertet. Wenn es auf eine Konstante bewertet wurde, z. 123 (Anstatt ein statischer Methodenaufruf zu sein.) Dann würde sich der Compiler nicht beschweren.

Andere Tipps

Du sind falsch! :-)

Fallanweisungen können nur auf Konstanten verweisen. Eine statische Variable wird zur Laufzeit initialisiert, sodass sie hier nicht verwendet werden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top