/ / Jak mogę użyć typu klasy z przełącznikiem w java? - java, class, switch-statement

Jak mogę używać typu klasy z przełącznikiem w java? - java, class, switch-statement

Mam następujący kod:

Variable var;
//var is initialized to an unknown class type, stored as a public variable named type.
//var = new Variable<Integer>(Integer.class, <some integer value>);
//var.type is equal to Integer.class

switch (var.type)
{
case Integer.class:
//do some class specific stuff
break;
case Float.class:
//do some class specific stuff
break;
etc...
}

Po wpisaniu kodu pojawia się komunikat "oczekiwano stałego wyrażenia Integer.class". Chciałbym użyć bloku przełączającego, ponieważ jest to czystsze, niż pisanie na klawiaturze:

if (var.type == Integer.class) {}

Nie mam pojęcia, dlaczego blok if skompiluje się bez błędu, podczas gdy blok przełączania nie. Nie jestem całkowicie przeciwny użyciu bloków, ale jest to bardziej kwestią mojej ciekawości w tym momencie.

Odpowiedzi:

2 dla odpowiedzi № 1

The Specyfikacja języka Java stwierdza, że ​​dla switch sprawozdania Wyrażenie:

Typ wyrażenia musi być char, byte, short, int, Character, Byte, Występuje skrót, liczba całkowita, ciąg lub typ wyliczeniowy lub występuje błąd czasu kompilacji.


0 dla odpowiedzi nr 2

Nie możesz użyć a switch oświadczenie o tym. Można używać tylko wartości całkowitych, łańcuchów lub wyliczeń switch case etykiety.


0 dla odpowiedzi № 3

Nie możesz użyć a switch instrukcja do porównania typu klasy obiektu. Musiałbyś z tym żyć if-else sprawozdania.