पर एक विधि निर्दिष्ट करना संभव है जो एक ऑब्जेक्ट देता है जो दो या एकाधिक इंटरफेस लागू करता है?पूर्ण वापसी एकाधिक इंटरफ़ेस
कहते हैं कि हम निम्नलिखित इंटरफेस है:
interface FooBar {
[Foo] & [Bar] getFooBar();
}
interface Foo {
void doFoo();
}
inteface Bar {
void doBar();
}
FooBar
का कार्यान्वयन करने वालों विधि getFooBar()
कि एक प्रकार है जो Foo
fullfills Bar
के रूप में रूप में अच्छी तरह का एक उदाहरण देता है प्रदान करने के लिए की जरूरत है।
मैं अब तक क्या करने की कोशिश की जेनरिक के साथ यह करने के लिए है:
interface FooBar {
<T extends Foo & Bar> T getFooBar()
}
class SomeImplementor implements FooBar {
private FooAndBarImpl fSomeField;
public <T extends Foo & Bar> T getFooBar() {
return fSomeField;
}
}
यह देखते हुए कि FooAndBarImpl
कुछ एक रूपरेखा या पुस्तकालय द्वारा प्रदान प्रकार है और Foo
लागू करता है और Bar
इस मुझे लगता है कि काम करना चाहिए। हालांकि, ऐसा नहीं है, क्योंकि "FooAndBarImpl को टी में परिवर्तित नहीं किया जा सकता"। ऐसा क्यों है? getFooBar()
द्वारा निहित अनुबंध टूटा नहीं है जैसा कि मैंने इसे देखा है।
एक और समाधान Foo
और Bar
तक फैला हुआ एक नया इंटरफ़ेस परिभाषित करना होगा और इसे रिटर्न प्रकार के रूप में उपयोग करना होगा। getFooBar()
कार्यान्वयन में fSomeField
के लिए मुझे खाली रैपर लौटने में बहुत अधिक समझ नहीं है।
किसी भी अन्य सलाह और/या स्पष्टीकरण के लिए धन्यवाद।
संपादित करें:
अगर किसी को क्यों जेनरिक दृष्टिकोण काम नहीं करता है समझा सकता है इसकी सराहना करेंगे। मैं बस इसे नहीं देखता हूँ।
मेरा उत्तर अद्यतन के बाद आप अद्यतन, (मैं क्या करने पर विचार) शामिल जेनरिक मुद्दा – davin