यदि आप एक नक्शा जहां दो प्रकार के उदाहरण कुंजी हो सकता है की घोषणा करना चाहते हैं अपने दो enums के लिए एक आम महाप्रकार की आवश्यकता है कुछ। एक मानचित्र में केवल एक कुंजी प्रकार हो सकता है, लेकिन यदि आपके पास दो प्रकार के उप प्रकार के साथ एक प्रकार है, तो यह ठीक है।
आप enums के लिए सुपर-क्लास (यह हमेशा java.lang.Enum
है) को बदल नहीं सकते, लेकिन आप उन्हें इंटरफेस को लागू कर सकते हैं। तो क्या आप कर सकते हैं यह है:
interface FruitOrVegetable {
}
enum Fruit implements FruitOrVegetable {
}
enum Vegetable implements FruitOrVegetable {
}
class MyClass {
Map<FruitOrVegetable, String> myMap;
}
सवाल यह है: क्या enums फल सब्जी की है कि आप इंटरफ़ेस में शामिल कर सकते हैं साझा व्यवहार है। व्यवहार के बिना एक इंटरफ़ेस सुंदर व्यर्थ है। आपको instanceof
चेक करने और लगातार Fruit
या Vegetable
के रूप में कुछ करने के लिए जांच करने की आवश्यकता होगी।
शायद आपके मामले में, आपको वास्तव में एक सिंगल enum FruitOrVegetable
की आवश्यकता है - यदि आप उन्हें एक दूसरे के साथ व्यवहार करने में सक्षम होना चाहते हैं।
स्रोत
2016-08-05 05:24:20
मैं एक EnumMap के रूप में यह कुंजी के रूप में enum के साथ नक्शे के लिए अनुकूलित है, एक HashMap के बजाय का उपयोग करने का सुझाव देते हैं। –