के साथ जावा में वैकल्पिक पैरामीट्रिजेशन क्या कक्षा में parametrzing जब डिफ़ॉल्ट प्रकार निर्दिष्ट करना संभव है? उदाहरण:जेनिक्स
// abstract class
public abstract class AbsClass<T1 extends Par1Class, T2 extends Par2Class> {
// code
}
// parametrized imlementation class
public class RealClass extends AbsClass<ClassThatExtendsPar1, ClassThatExtendsPar2Class> {
// code
}
// non-parametrized imlementation class
public class RealClass extends AbsClass {
// code
}
मेरी कार्यान्वयन में
मैं कोई भी या सभी पैरामीटर निर्दिष्ट करने के लिए है।
// abstract class
public abstract class AbsClass<T1 extends Par1Class, T2 extends Par2Class : default Par2Class > {
// code
}
// parametrized only mandatory imlementation class
public class RealClass extends AbsClass<ClassThatExtendsPar1> {
// code
}
वहाँ ऐसा करने का एक अच्छा कारण है हो सकता है। क्योंकि मेरा "वैकल्पिक पैरामीटर" (टी 2 Par2Class बढ़ाता है) एक वर्ग है जिसे हम वैल्यू ऑब्जेक्ट के रूप में उपयोग करते हैं और कई अन्य वर्गों में विस्तारित होते हैं। अगर मैं टी 2 निर्दिष्ट नहीं करता हूं, तो मैं ValueObject से डिफ़ॉल्ट विधियों का उपयोग करता हूं। अगर मैं निर्दिष्ट करता हूं, तो मुझे विशिष्ट तरीकों की आवश्यकता है और उन्हें कास्ट करने की ज़रूरत नहीं है। मैं विरासत आदेश में एक और कक्षा शुरू करने की सोच रहा था, लेकिन मैं वैकल्पिक parametrization के बारे में उत्सुक था। धन्यवाद। – davorp
मैं गलत हो सकता हूं, लेकिन मुझे लगता है कि ऐसे उपयोग के मामले हैं। सी ++ में, जहां डिफॉल्ट टेम्पलेट प्रकारों की अनुमति है, उनका उपयोग किया जाता है उदा। एसटीएल प्रकारों के लिए मेमोरी आवंटक का एक डिफ़ॉल्ट संस्करण प्रदान करने के लिए। – Rom1
इसके लिए विशिष्ट अच्छा उपयोग स्विंगवर्कर के इंटरमीडिएट प्रकार पैरामीटर होगा, यदि यह परिणामी पैरामीटर के समान है। –