मैं यह जानने की कोशिश कर रहा हूं कि उछाल के माध्यम से जेनिक्स कैसे प्राप्त करें।जेनिक्स पज़लर
मेरे पास है:
interface Root { }
interface Middle extends Root { }
class Type implements Root { }
और कई "उप-प्रकार" कक्षाएं:
class Subtype1 extends Type implements Middle { }
class Subtype2 extends Type implements Middle { }
...
क्या मैं चाहता हूँ दो प्रकार पैरामीटर T
और S
, जहां T
Type
से बाध्य है के साथ एक वर्ग घोषित करने के लिए है और S
T
और Middle
से बाध्य है।
मैं यह सुनिश्चित करने के लिए जेनेरिक के साथ एक तरीका नहीं देख सकता कि S
T
बढ़ाता है और Middle
लागू करता है।
class Handler<T extends Root, S extends T, S extends Middle>;
या
class Handler<T extends Root, S extends <T extends Middle>>;
लेकिन न तो निश्चित रूप से कानूनी हैं: क्या मैं चाहता हूँ की तरह कुछ है। शायद कुछ जादू है जो मुझे याद आ रही है?
आप यह नहीं कर सकते हैं। आपके पास कई सीमाएं हो सकती हैं लेकिन वे 0-1 कक्षा और एकाधिक इंटरफेस होना चाहिए। आपके पास एक सामान्य बाध्य स्थिति में जेनेरिक प्रकार नहीं हो सकता है। मुझे संदेह है कि इस प्रतिबंध को रखा गया था क्योंकि कई सीमाओं में टाइप करने के लिए सिंटैक्स चेकर में बहुत जटिलता पैदा होगी, एक दुर्लभ एज केस क्या है। – BevynQ
संबंधित: http://stackoverflow.com/a/13261667/697449 –
धन्यवाद। वह भी मेरा पठन था लेकिन लगा कि यह संभव था कि मैं कल्पना में कुछ खो रहा था। यह है! –