2009-06-09 48 views
11

Có thể nhận các giá trị điều tra từ một Lớp không? Hãy để tôi giải thích điều này một chút. Nếu tôi có một enum ví dụ FooBar, sau đó tôi có thể nhận được các giá trị của FooBar bằng cách gọi FooBar.values ​​() sẽ trả về một mảng với các liệt kê (FooBar []). Vấn đề của tôi là, tôi có một phương thức lấy tham số đầu vào một lớp (Class c) và trong phương thức tôi kiểm tra xem nó có phải là enum (c.isEnum()) hay không. Nếu nó là một enum, tôi sẽ cần phải bằng cách nào đó có được các giá trị enum, vấn đề là tôi không biết khá làm thế nào để làm điều này, tôi thậm chí không hoàn toàn chắc chắn nó có thể. Vì vậy, là nó có thể và nếu nó là, làm thế nào tôi có thể thực hiện điều này? (Lưu ý rằng giải pháp cần phải là chung chung, nói cách khác không phải là của người khác).Lấy các giá trị liệt kê từ Lớp

Trả lời

22

Um ... bạn đã xem tài liệu API chưa?

Class.getEnumConstants()

+1

Có, một vài lần và tôi bằng cách nào đó chỉ giữ thiếu phương thức đó o_O –

+1

Chỉ cần thêm ví dụ về cách sử dụng: http://java.sun.com/docs/books/tutorial/reflect/special/ enumMembers.html – Kosi2801

0

được sửa đổi:. Bạn có thể sử dụng c.getClass() getEnumConstants() để có được các giá trị của hằng số

(nó nói 'tên' thay vì 'giá trị' và bổ sung một số nội dung không cần thiết)

+0

Sai. getEnumConstants() trả về các giá trị, không phải các tên - và chúng thậm chí được gõ thông qua Generics nếu đối tượng lớp là, mặc dù điều đó có lẽ không áp dụng trong trường hợp này. –

+0

Ah, tôi nghĩ tôi vừa thử nghiệm điều đó, nhưng có một lỗi trong bài kiểm tra nhanh chóng của tôi; xin lỗi vì điều đó. – Confusion

Các vấn đề liên quan