मैं अगर एक वर्ग एक Enum है पता करने के लिए कोशिश कर रहा हूँ है, लेकिन मुझे लगता है कि मैं कुछ याद कर रहा हूँ: यह मुझे उस कह त्रुटि देताअगर जाँच एक वर्ग java.lang.Enum
if (test.MyEnum.class instanceof Enum<?>.class)
obj = resultWrapper.getEnum(i, test.MyEnum.class);
else
obj = resultWrapper.getObject(i);
Enum क्लास वैध नहीं है। तो मैं कैसे जांच सकता हूं कि कक्षा एक एनम है या नहीं? मुझे यकीन है कि यह निर्धारित करना संभव है कि, मैं इसे प्राप्त करने में असमर्थ हूं।
if (obj.getClass().isEnum()) {
...
}
Enum
तो अपने कस्टम वर्ग है: -
धन्यवाद
'isEnum()'। यह गलत होता है यदि आपकी कक्षा एक अज्ञात वर्ग है जो किसी विधि को ओवरराइड करने वाले enum मानों में से एक द्वारा बनाई गई है। – Trejkaz
@Trejkaz क्या आप उस पर विस्तार कर सकते हैं? मैं आपको –
का पालन नहीं कर रहा हूं यदि आपके पास अपने enum में विधियां हैं, तो enum के व्यक्तिगत मान उन्हें ओवरराइड कर सकते हैं। यदि आप इनमें से किसी भी तरीके को ओवरराइड करते हैं तो यह एक अज्ञात वर्ग बनाता है जो enum का उप-वर्ग है। उस वर्ग के लिए isEnum() झूठी वापसी करता है। इस प्रकार, भले ही EnumClass.class.isEnum() सत्य लौटाता है, EnumClass.SOME_VALUE.getClass()। IsEnum() झूठी वापसी कर सकता है, इसलिए आपको सावधान रहना होगा कि आप कहां से कक्षा प्राप्त करते हैं। उदाहरण के लिए, यदि आप दूसरों के कॉल करने के लिए उपयोगिता विधि लिख रहे थे, तो isEnum() का उपयोग करना एक बुरा विचार होगा और Enum.class.isAssignableFrom (Clazz) का उपयोग करना सुरक्षित होगा। – Trejkaz