2009-06-09 16 views
11

Czy można uzyskać wartości wyliczenia z klasy? Pozwól, że trochę to rozwiążę. Jeśli mam wyliczenie na przykład FooBar, to mogę uzyskać wartości FooBar przez wywołanie FooBar.values ​​(), które zwróci tablicę z wyliczeniami (FooBar []). Mój problem polega na tym, że mam metodę, która przyjmuje jako parametr wejściowy klasę (klasa c) iw ramach metody sprawdzam, czy jest to enum (c.isEnum()). Jeśli to jest wyliczenie, musiałbym jakoś uzyskać wartości wyliczeniowe, problemem jest to, że nie wiem jak to zrobić, nie jestem nawet całkowicie pewien, czy to możliwe. Czy jest to możliwe i jeśli tak, jak mogę to osiągnąć? (Zauważ, że rozwiązanie musi być ogólne, innymi słowy nie jeśli-else).Uzyskaj wartości wyliczeniowe z klasy

Odpowiedz

22

Um ... czy obejrzałeś dokumentację API?

Class.getEnumConstants()

+1

Tak, kilka razy i jakoś tak po prostu tęskniłem za tą metodą o_O –

+1

Wystarczy dodać przykład, jak jej używać: http://java.sun.com/docs/books/tutorial/reflect/special/ enumMembers.html – Kosi2801

0

Zmieniano:. Można użyć c.getClass() getEnumConstants(), aby uzyskać wartości stałych

(to powiedział 'nazwy' zamiast 'wartości' i dodał trochę niepotrzebnych rzeczy)

+0

Niepoprawnie. getEnumConstants() zwraca wartości, a nie imiona - i są one nawet wpisywane przez generyczne, jeśli obiekt klasy jest, choć prawdopodobnie nie ma w tym przypadku zastosowania. –

+0

Ach, myślałem, że właśnie to przetestowałem, ale jest błąd w moim szybkim i brudnym teście; przepraszam za to. – Confusion

Powiązane problemy