Próbuję się dowiedzieć, czy klasa jest Enum, ale myślę, że czegoś brakuje:sprawdzenie, czy klasa jest java.lang.Enum
if (test.MyEnum.class instanceof Enum<?>.class)
obj = resultWrapper.getEnum(i, test.MyEnum.class);
else
obj = resultWrapper.getObject(i);
Daje mi błąd mówiąc, że Enum .class jest nieprawidłowy. Więc jak mogę sprawdzić, czy klasa jest Enum? Jestem prawie pewien, że można to ustalić, po prostu nie mogę tego zdobyć.
Dzięki
Strzeżcie z 'isEnum()'. Zwraca wartość false, jeśli twoja klasa jest anonimową klasą utworzoną przez jedną z wartości wyliczeniowych przesłaniających metodę. – Trejkaz
@Trejkaz mógłbyś to rozwinąć? Nie podążam za tobą –
Jeśli masz metody w swoim wyliczeniu, poszczególne wartości wyliczenia mogą je zastąpić. Jeśli zastąpisz którąkolwiek z tych metod, tworzy ona anonimową klasę, która jest podklasą enum. isEnum() dla tej klasy zwraca false. Tak więc, nawet jeśli EnumClass.class.isEnum() zwraca wartość true, EnumClass.SOME_VALUE.getClass(). IsEnum() może zwrócić wartość false, więc musisz być ostrożny, skąd bierzesz klasę. Na przykład, jeśli piszesz metodę narzędziową dla innych, aby wywołać, użycie isEnum() byłoby złym pomysłem i użycie Enum.class.isAssignableFrom (clazz) byłoby bezpieczniejsze. – Trejkaz