public abstract class AbstractTool<AT extends AbstractThing> {
protected ArrayList<AT> ledger;
public AbstractTool() {
ledger = new ArrayList<AT>();
}
public AT getToolAt(int i) {
return ledger.get(i);
}
// More code Which operates on Ledger ...
}
public class Tool<AT extends AbstractThing> extends AbstractTool {
public Tool() {
super();
}
}
के सही उपयोग कैसे मैं सही ढंग से सुपर कहते हैं AbstractTool निर्माता को Tool
की AT
सामान्य पारित करने के लिए?विस्तार जेनेरिक सार कक्षा और सुपर
यह कोई फर्क नहीं पड़ता कि मैं क्या लगता है AT
लेने जब मैं Tool
(कहो, Tool<Thing>
) की घोषणा होने के लिए, कि मैं हमेशा Thing
के बजाय एक AbstractThing
वापस मिलता है। यह जेनेरिक के उद्देश्य को हराने के लिए प्रतीत होता है ...
सहायता?
वास्तव में इस मामले में, क्योंकि सारटूल के जेनेरिक पैरामीटर पर प्रकार की बाधाएं विरासत में प्राप्त होंगी, आप केवल 'पब्लिक क्लास टूल लिख सकते हैं AbstractTool '। यह कार्यात्मक रूप से समतुल्य होगा क्योंकि AbstractTool की परिभाषा आपको एक सामान्य पैरामीटर का उपयोग करने से रोकती है जो 'सार तत्व' नहीं थी। –