2009-06-09 4 views
11

से गणना मान प्राप्त करें क्या कक्षा से गणना मान प्राप्त करना संभव है? मुझे थोड़ा सा विस्तार करने दो। अगर मेरे पास FooBar उदाहरण के लिए एक enum है, तो मैं FooBar.values ​​() को कॉल करके FooBar के मान प्राप्त कर सकता हूं जो गणनाओं के साथ एक सरणी लौटाएगा (FooBar [])। मेरी समस्या यह है कि मेरे पास एक विधि है जो एक इनपुट पैरामीटर के रूप में एक कक्षा (कक्षा सी) के रूप में लेती है और विधि के भीतर मैं जांचता हूं कि यह एक enum (c.isEnum()) है या नहीं। यदि यह एक enum है, तो मुझे किसी भी तरह enum मूल्य प्राप्त करने की आवश्यकता होगी, समस्या यह है कि मुझे यह नहीं पता कि यह कैसे करना है, मुझे यह भी पूरी तरह से यकीन नहीं है कि यह संभव है। तो, क्या यह संभव है और यदि यह है, तो मैं इसे कैसे पूरा कर सकता हूं? (ध्यान दें कि समाधान सामान्य होने की जरूरत है, दूसरे शब्दों में अगर नहीं - और है)।कक्षा

उत्तर

22

उम ... क्या आपने एपीआई दस्तावेज़ देखा है?

Class.getEnumConstants()

+1

हां, कुछ बार और मैंने किसी भी तरह से उस विधि को याद रखा है o_O –

+1

बस इसका उपयोग करने के लिए एक उदाहरण जोड़ने के लिए: http://java.sun.com/docs/books/tutorial/reflect/special/ enumMembers.html – Kosi2801

0

संपादित:। आप c.getClass उपयोग कर सकते हैं() getEnumConstants() स्थिरांक

के मूल्यों को प्राप्त करने के लिए (यह कहा 'मूल्यों' के स्थान पर 'नाम' और कुछ अनावश्यक सामान जोड़ा)

+0

गलत। getEnumConstants() मानों को वापस करता है, न कि नाम - और क्लास ऑब्जेक्ट होने पर भी जेनरिक के माध्यम से टाइप किया जाता है, हालांकि शायद इस मामले में लागू नहीं होता है। –

+0

आह, मैंने सोचा कि मैंने अभी परीक्षण किया है, लेकिन मेरे त्वरित गंदे परीक्षण में एक बग है; उसके लिए माफ़ करना। – Confusion