चलें कहते हैं कि मैं एक साधारण Enum पशु कहा जाता है के रूप में परिभाषित किया है:मैं कक्षा नाम दिए गए एक enum "valueOf" कैसे कर सकता हूं?
public enum Animal {
CAT, DOG
}
और मैं की तरह एक विधि है:
private static Object valueOf(String value, Class<?> classType) {
if (classType == String.class) {
return value;
}
if (classType == Integer.class) {
return Integer.parseInt(value);
}
if (classType == Long.class) {
return Long.parseLong(value);
}
if (classType == Boolean.class) {
return Boolean.parseBoolean(value);
}
// Enum resolution here
}
क्या मैं इस विधि के अंदर डाल सकते हैं एक वापस जाने के लिए मेरे enum का उदाहरण जहां मूल्य वर्ग प्रकार का है?
मैं कोशिश कर रहा पर ध्यान दिया है:
if (classType == Enum.class) {
return Enum.valueOf((Class<Enum>)classType, value);
}
लेकिन वह काम नहीं करता।
लेकिन कक्षा बराबर नहीं है(), तो मुझे लगता है कि बराबर() कई वर्ग लोडर होने पर काम नहीं करेगा। – waxwing
उम्म, मुझे लगता है कि आप सही हैं। असल में मुझे नहीं पता कि कितने वर्ग लोडर एक साथ काम करते हैं, न ही यदि यह वास्तव में संभव है (या यहां तक कि संभव है) कि एक ही कक्षा वस्तु के कई उदाहरण हैं। शायद 'कक्षा # isAssignableFrom() 'भी इस्तेमाल किया जा सकता है। उस ने कहा, 'बराबर() 'का उपयोग करना शायद ही गलत है। –