2012-01-23 16 views
21

है, मैं यह जांचना चाहता हूं कि java.lang.reflect.Type इंस्टेंस एक Emum ऑब्जेक्ट का प्रतिनिधित्व करता है या नहीं।यह जांचने के लिए कि java.lang.reflect.Type एक Enum

मैं जांच कर सकते हैं कि क्या यह एक विशिष्ट वर्ग का उपयोग करने का एक उदाहरण है == तुलना जैसे:

type == String.class // works 

लेकिन इस Enum वर्ग के लिए काम करने के लिए प्रतीत नहीं होता:

type == Enum.class // doesn't work 

.. यह समझ में आता है क्योंकि उदाहरण एक विशिष्ट enum का होगा, लेकिन मैं यह जांचना चाहता हूं कि यह प्रकार किसी भी enum के लिए है या नहीं।

कोई कैसे बताने के लिए है कि क्या प्रकार एक enum है या नहीं कृपया

+3

क्या Class.isEnum साथ कुछ गड़बड़ है()? – aviad

+0

मैं टाइप ऑब्जेक्ट का उपयोग कर रहा हूं क्योंकि यह आदिम प्रकारों का समर्थन करता है। मैं isEnum() को कॉल करने में सक्षम होना चाहता हूं लेकिन यह टाइप ऑब्जेक्ट – Edd

+0

पर आपकी टिप्पणी को समझने में विफल रहा है। कक्षा उपकरण प्रकार। – aviad

उत्तर

30
if(type instanceof Class && ((Class<?>)type).isEnum()) 
+1

धन्यवाद, मुझे पता था कि यह कुछ स्पष्ट होगा – Edd

7

Class.isEnum() यह तुम्हारे लिए क्या होगा के मेरे लिए स्पष्ट समझा सकते हैं।

देखें Oracle Doc

+0

आप इस – Edd

+0

को कार्यान्वित करने के तरीके के बारे में अधिक विशिष्ट हो सकते हैं, यह आपके उदाहरण से 'type.isEnum()' में अनुवाद करेगा। – towi

1

तुम क्यों .equals विधि का उपयोग नहीं करते की तुलना में इस प्रकार की तुलना। == ज्यादातर प्राचीन प्रकार के लिए प्रयोग किया जाता है।

type.equals(Enum.class) 

या शायद आपको अपनी कक्षाओं की तुलना करने की आवश्यकता होगी।

type.equals(MyClass.class) 
+0

बराबर विधि Enum.class – Edd

+0

के साथ काम नहीं कर रही है, मुझे लगता है कि आपको दूसरा सुझाव काम करेगा, लेकिन मुझे इसे किसी भी enum के साथ काम करने की ज़रूरत है ... न केवल उन स्पष्ट रूप से परिभाषित – Edd

0
if(type instanceof Class && (Class)type.getClass().isEnum()) {...} 
+0

type.getClass() 'वर्ग' देता है और नहीं मेरा enum – Edd

+0

कक्षा – aviad

+0

आह हाँ पर डालने का प्रयास करें ... मुझे डर है कि @ jtahlborn ने पहले ही यह सुझाव दिया है। आपके प्रयासों के लिए धन्यवाद हालांकि – Edd

संबंधित मुद्दे