के सभी सबक्लास में परिभाषित करने के लिए एक निर्माता को कैसे मजबूर कर सकता हूं मेरे पास एक अमूर्त वर्ग ए है जो अमूर्त तरीकों को परिभाषित करता है। इसका मतलब है कि, एक वर्ग के लिए अस्थिर होने के लिए, सभी अमूर्त विधि को लागू किया जाना है।मैं अपने अमूर्त वर्ग
मैं अपने सभी उप-वर्गों को पैरामीटर के रूप में 2 इंट्स के साथ एक कन्स्ट्रक्टर को कार्यान्वित करना चाहता हूं।
एक कन्स्ट्रक्टर घोषित करना मेरे उद्देश्य को हराता है, क्योंकि मैं सबक्लास में परिभाषित कन्स्ट्रक्टर चाहता हूं और मुझे कार्यान्वयन के बारे में कुछ भी पता नहीं है। इसके अलावा मैं एक कन्स्ट्रक्टर को अमूर्त होने की घोषणा नहीं कर सकता;
क्या ऐसा करने का कोई तरीका है?
जो मैं चाहता का उदाहरण:
चलें कहना है कि मैं एक मैट्रिक्स वर्ग के एपीआई को परिभाषित कर रहा हूँ। मेरी समस्या में, मैट्रिक्स उनके आयामों को बदल नहीं सकता है।
एक मैट्रिक्स बनाने के लिए, मुझे इसका आकार प्रदान करने की आवश्यकता है।
इसलिए, मैं अपने सभी कार्यान्वयनकर्ताओं को पैरामीटर के रूप में आकार के साथ निर्माता प्रदान करना चाहता हूं। यह कन्स्ट्रक्टर समस्या से प्रेरित है, न कि कार्यान्वयन चिंता से। कार्यान्वयन जो कुछ भी चाहता है वह कर सकता है, बशर्ते कि विधियों के सभी अर्थपूर्ण रखा जाए।
मान लें कि मैं अपने सार वर्ग में invert()
विधि का मूल कार्यान्वयन प्रदान करना चाहता हूं। यह विधि this
उलटा आयामों के साथ एक नया मैट्रिक्स बनाएगी। अधिक विशेष रूप से, जैसा कि इसे अमूर्त वर्ग में परिभाषित किया गया है, यह एक ही वर्ग का एक नया उदाहरण this
के रूप में बनाएगा, जिसमें दो इंट्स लेने वाले कन्स्ट्रक्टर का उपयोग किया जाएगा। चूंकि यह उदाहरण को नहीं जानता है, यह प्रतिबिंब (getDefinedConstructor) का उपयोग करेगा और मैं वारंटी का एक तरीका चाहता हूं कि मैं इसे प्राप्त करूंगा और यह कार्यान्वयन के लिए अर्थपूर्ण होगा।
यहां एक सुरुचिपूर्ण समाधान मिल सकता है: http://stackoverflow.com/questions/6028526/java-force-an-extending-class –