मैं इस समस्या के वेरिएंट के लिए वापस आते रहते हैं: यह शायद एक बहुत ही सरल समाधान है, लेकिन मैं यह पता लगा नहीं कर पा रहे ...रिटर्निंग उपवर्ग वस्तु
मैं वर्गों का एक समूह है फॉर्म xQuantity, उदाहरण के रूप में DistanceQuantity, AreaQuantity, आदि, जो कक्षा DimensionQuantity का विस्तार करता है। अब आप दूरस्थ क्वांटिटी या एरियाक्वैंटिटी इत्यादि को जोड़ या घटा सकते हैं, लेकिन आप उन्हें मिश्रण नहीं कर सकते हैं, इसलिए मुझे लगता है कि मुझे सबक्लास में विधियों को जोड़ने, घटाने, घटाने आदि की आवश्यकता है, लेकिन मैं किसी भी तर्क को कम करना चाहता हूं न्यूनतम करने के लिए नकल। हालांकि, मुझे उप-वर्ग की वस्तु वापस करने की आवश्यकता है, और सुपरक्लास विधि से ऐसा करना मुश्किल लगता है। मेरा मानना है कि यह प्रतिबिंब का उपयोग करके किया जा सकता है, लेकिन AFAIK आपको अभी भी उप-वर्ग विधि में अंत में एक कलाकार करना है, और मुझे बताया गया है कि प्रतिबिंब महंगा हो सकता है ... सबसे अच्छा मैं अब तक आया हूं:
DistanceQuantity में (और अन्य इसी तरह के):
public DistanceQuantity() {
}
public DistanceQuantity add(DistanceQuantity d1) {
DistanceQuantity dn = new DistanceQuantity();
Object o = super.add(dn, this, d1, DistanceUnit.REF_UNIT);
return (DistanceQuantity) o;
}
DimensionQuantity में (ऋण कुछ कम प्रासंगिक बयानों):
public Object add(DimensionQuantity dn, DimensionQuantity d1, DimensionQuantity d2,
AbstractUnit au) {
dn.unit = au;
dn.scalar = d1.scalar + d2.scalar;
dn.units = dn.scalar;
return dn;
}
किसी leaner कोड के साथ आ सकते हैं - कि अभी भी type- है सुरक्षित? TIA
जेनिक्स को T_DimensionQuantity – Egwor
के करीब कुछ नाम देने के लिए यह बेहतर है (स्पष्ट होने के बाद आपके पास बहुत सारे जेनेरिक हैं) आप अमूर्त कीवर्ड भूल गए हैं। ;) बस 'टी' का उपयोग करना मुझे लगता है कि मानक मानक अभ्यास है। – Michael
@mangst धन्यवाद, यह अब सार है। @Egwor, जैसे @ mangst ने कहा, टी आम है। टाइप के लिए टी, संग्रह में यह ई के लिए तत्व है, मानचित्र में यह कुंजी और मान के लिए के और वी है। आमतौर पर यह आपके जेनेरिक अर्थ का पहला अक्षर है। –