मैं की तरह enums कि एक आम इंटरफ़ेस विस्तार का एक संग्रह है, तो कुछ है करने के लिए प्रयास कर रहा हूँ:Enum <? फैली इंटरफ़ेस>
interface Fooable
{
void someCommonMethod();
}
enum E1 implements Fooable
{
// some enumuerations and a definition for someCommonMethod()
}
enum E2 implements Fooable
{
// some different enumerations and a different definition for someCommonMethod()
}
और फिर कहीं और लागू करने के लिए दोनों कि एक चर एक Enum है के द्वारा इस का उपयोग करें और इंटरफ़ेस लागू करता है। तो की तर्ज पर कुछ ..
bar(Enum<? extends Fooable> fe)
{
fe.ordinal();
fe.someCommonMethod();
}
हालांकि, अब तक मैं आदेश इंटरफ़ेस को लागू करने, यानी के रूप में यह उपचार के लिए फ़े डाली करने के लिए, लग
bar(Enum<? extends Fooable> fe)
{
fe.ordinal();
((Fooable)fe).someCommonMethod();
}
और जब तक यह होना चाहिए सुरक्षित ... यह उपमहाद्वीप लगता है और मैं कुछ दिख रहा हो सकता है। बेशक अगर मैं सिर्फ फ्यूमेबल के रूप में परम को पारित करने की कोशिश करता हूं तो मैं इसे एनम के रूप में पेश करने के लिए कास्टिंग कर देता हूं और न केवल यह लाभ है कि मैं अब भी सुरक्षित नहीं हूं। निम्नलिखित देखें:
bar(Fooable fe)
{
// potentially unsafe cast!
((Enum<?>)fe).ordinal();
fe.someCommonMethod();
}
क्या है मैं अनदेखी कर रहा हूँ या है
Enum<? extends Fooable>
के बारे में के रूप में करीब
एक 'अच्छा' समाधान के लिए के रूप में मैं मिल जाएगा?
मैं जावा के लिए अपेक्षाकृत नया हूं और अभी भी इसे सी या सी ++ जैसे उपयोग करने की कोशिश कर रहा हूं, इसलिए यदि मैं इसे एक आंख की बजाय हथौड़ा की तरह देख रहा हूं या कुछ बेवकूफ सरल दिख रहा हूं तो इसे इंगित करने के लिए स्वतंत्र महसूस करें :)
मैंने इस बारे में सोचा था, लेकिन मुझे मूल्यों() के संबंध में इसके व्यवहार के बारे में आरक्षण था, फिर भी समीक्षा के लायक हो सकता है, हालांकि अभी मैं एक वैध आरक्षण को खत्म करने में सक्षम नहीं हूं ... – Khanmots
इसके लिए एक अनावश्यक इंटरफ़ेस की आवश्यकता है । –
@ माइक, मैं जितना अधिक सोचता हूं उतना ही मुझे लगता है कि यह सही रास्ता है। मेरी आवश्यकता वास्तव में नहीं है कि टाइप ** ** एक enumm है, यह है कि यह एक enum के ** व्यवहार ** है। मैंने खुद को यह भी आश्वस्त किया है कि मूल्य() चीज एक समस्या नहीं होगी और मैं मूर्खतापूर्ण था। – Khanmots