2008-09-25 10 views
11

बढ़ाता है जावा में एक सामान्य बाधा परिभाषित करने का कोई तरीका है जो निम्नलिखित सी # जेनेरिक constratint के समान होगा?जावा में कक्षा पर डबल जेनेरिक बाधा: कंक्रीट क्लास और I

class Class1<I,T> where I : Interface1, Class2 : I 

मैं इस तरह यह करने के लिए कोशिश कर रहा हूँ:

class Class1<I extends Interface1, T extends I & Class2> 

लेकिन संकलक "Class2" भाग के बारे में शिकायत: अन्य सीमा के बाद नहीं किया जा सकता प्रकार पैरामीटर।

+0

'extands'? क्या आपका मतलब 'विस्तार' था? - सी # लाइन टी प्रकार पर कोई प्रतिबंध नहीं रखती है, शायद आपने गलती की है? – BrainSlugs83

+0

यह एक टाइपो है और यह जावा है। – axk

उत्तर

4

सबसे आसान तरीका मैं जावा कोड को हल करने का देख सकते हैं Class2 एक इंटरफेस बनाने के लिए है।

आप एक से अधिक वर्ग या टाइप पैरामीटर को विस्तारित करने के लिए एक प्रकार पैरामीटर को बाधित नहीं कर सकते हैं। इसके अलावा, आप यहां सुपर का उपयोग नहीं कर सकते हैं।

5

इस कोड को यहाँ ठीक संकलित:

interface Interface1 {} 

class Class2 {} 

class Class1<I extends Interface1, T extends Class2 & Interface1> {} 

आप की आवश्यकता क्यों है मैं वहाँ टाइप जब आप केवल Interface1 वैसे भी मान लेते हैं? (आप की तुलना में यह Interface1 फैली मैं के बारे में अपनी कक्षा में कुछ भी अधिक पता नहीं होगा)

+3

बिंदु यह है कि "टी कक्षा 2 और मैं विस्तारित करता है" नहीं "टी कक्षा 2 और इंटरफेस 1 बढ़ाता है" जब आप दोनों पैरामीटर के लिए ठोस वर्ग निर्दिष्ट करते हैं – axk

संबंधित मुद्दे