2015-04-28 8 views
9

मेरे पास निम्न प्रकार के पैरामीटर के साथ निम्न स्तर की विरासत के साथ निम्न जावा क्लास है। मैं कक्षा बी में प्रकार पैरामीटर टी का उपयोग करना चाहतेविरासत के एकाधिक स्तर

class B extends C { 
} 
class C<T extends D> { 
} 
class D { 
} 

हालांकि, वह निम्नलिखित संकलन नहीं करता है:

class B extends C { 
    T t; 
} 
class C<T extends D> { 
} 
class D { 
} 

हालांकि मैं वर्ग सी में चर टी परिभाषित कर सकते हैं, लेकिन यह नहीं है एक अच्छा कोडिंग अभ्यास। मैं निम्नलिखित को कैसे परिभाषित कर सकता हूं (यह भी संकलित नहीं है)?

class B extends C<T extends D> { 
} 

धन्यवाद!

+0

"लेकिन यह एक अच्छा कोडिंग अभ्यास नहीं है" 0o? क्यूं कर ? – benzonico

+0

यदि मैं कक्षा बी के लिए इस टी का उपयोग करना चाहता हूं, लेकिन मुझे कक्षा सी का एक और उप-वर्ग मिलता है, तो मुझे सभी उप-वर्गों के लिए कक्षा सी में बहुत से चर टी, टी 2, टी 3 ... बनाने की आवश्यकता है। –

उत्तर

5

प्रकार पैरामीटर नहीं ली गई है!

आप अपने वर्ग B सामान्य, आप अपने स्वयं के प्रकार पैरामीटर निर्दिष्ट करना चाहिए करना चाहते हैं: क्योंकि यह इस तरह से विवश है

class B<T extends D> extends C<T> { 
    T t; 
    ... 
} 

ध्यान दें कि आप फिर से प्रकार पैरामीटर T विवश होना चाहिए यह D का विस्तार करने के लिए वर्ग C में।

1

यह होना चाहिए:

class B<T extends D> extends C<T> { 
} 
संबंधित मुद्दे