के साथ जावा कॉपी कन्स्ट्रक्टर शायद इसे दस लाख बार पहले पूछा गया है, लेकिन मुझे एक बाध्य प्रकार पैरामीटर के साथ एक अमूर्त वर्ग पर एक कॉपी कन्स्ट्रक्टर लिखने के आसपास अपने सिर को लपेटने में परेशानी हो रही है। मैं कुछ कोड है कि इस तरह दिखता है:जेनिक्स
public abstract class Superclass<T> {
Set<? extends Variable<T>> vars;
public abstract Superclass<? extends T> copy();
class Variable<T> {
T value;
}
}
class Foo extends Superclass<Integer> {
public Foo copy() {
Foo _newFoo = Foo();
Set<FooVariable> _newVars = new HashSet<FooVariable>();
_newVars.addAll(this.vars);
_newFoo.vars = _newVars;
}
class FooVariable extends Variable<Integer> { /* ... */ }
}
class Bar extends Superclass<String> {
public Bar copy() {
Bar _newBar = Bar();
Set<BarVariable> _newVars = new HashSet<BarVariable>();
_newVars.addAll(this.vars);
_newBar.vars = _newVars;
}
class BarVariable extends Variable<String> { /* ... */ }
}
के बाद से दोनों Foo
और Bar
के लिए copy
विधि वैरिएबल प्रकार के अलावा एक ही है, मैं में एक ठोस विधि में है कि कोड स्थानांतरित करने में सक्षम होना चाहते हैं superclass। लेकिन मैं समझ नहीं (क) कैसे ठोस public Superclass<? extends T> copy
विधि एक Foo
उदाहरण लौटने के लिए अगर एक Foo
और एक Bar
उदाहरण पर बुलाया करता है, तो एक Bar
और (ख) FooVariable
या के रूप में BarVariable
रों साथ vars
सेट पॉप्युलेट पर बुलाया उचित।
क्या कोई मेरी मदद कर सकता है और मुझे बता सकता है कि मुझे क्या याद आ रहा है? धन्यवाद।
एक प्रतिलिपि एक वास्तविक निर्माता है जो वर्ग के एक तर्क के रूप में स्वीकार करता है। यह एक प्रतिलिपि विधि है। –
यह इन 'Foo _newFoo = Foo();' और अनुपलब्ध रिटर्न प्रकार के बारे में क्या संकलित त्रुटि देगा? या मैं आपकी मदद के लिए धन्यवाद कुछ अवधारणा – exexzian