2010-12-28 6 views
63

मुझे एक बेस क्लास बनाने की आवश्यकता है जो कई विधियों के साथ कई इंटरफेस लागू करता है, उदाहरण के नीचे।जावा के साथ कई इंटरफेस लागू करना - क्या प्रतिनिधि का कोई तरीका है?

डुप्लिकेट विधियों के निर्माण के बिना इन विधि कॉल को प्रतिनिधि करने का कोई आसान तरीका है?

public class MultipleInterfaces implements InterFaceOne, InterFaceTwo { 

    private InterFaceOne if1; 
    private InterFaceTwo if2; 

    public MultipleInterfaces() { 
     if1 = new ImplementingClassOne(); 
     if2 = new ImplementingClassTwo(); 
    } 

    @Override 
    public void classOneMethodOne { if1.methodOne(); } 
    @Override 
    public void classOneMethodTwo { if1.methodTwo(); } 
    /** Etc. */ 


    @Override 
    public void classTwoMethodOne { if2.methodOne(); } 
    @Override 
    public void classTwoMethodTwo { if2.methodTwo(); } 
    /** Etc. */ 

} 

उत्तर

74

जैसा कि कहा गया, कोई रास्ता नहीं है। हालांकि, थोड़ा सभ्य आईडीई प्रतिनिधि तरीकों को स्वत: उत्पन्न कर सकता है। उदाहरण के लिए ग्रहण कर सकते हैं। सबसे पहले सेटअप एक टेम्पलेट:

public class MultipleInterfaces implements InterFaceOne, InterFaceTwo { 
    private InterFaceOne if1; 
    private InterFaceTwo if2; 
} 

तो rightclick, चुनें स्रोत> प्रतिनिधि के तरीके उत्पन्न और दोनों if1 और if2 क्षेत्रों टिकटिक और ठीक क्लिक करें।

भी देखें निम्न स्क्रीन:

alt text


alt text


alt text

+8

धन्यवाद उपयोगी उत्तर मेरी परियोजना ग्रहण में आधारित है, इसलिए मैं लगभग वास्तविक समय में बलुस के उत्तर का उपयोग करने में सक्षम था! एक आकर्षण की तरह काम किया, और मुझे निराशाजनक काम के कई घंटे बचाया। इस मंच के एक नए उपयोगकर्ता के रूप में, मैं यहां प्रतिभागियों की गुणवत्ता पर आश्चर्यचकित हूं और प्रसन्न हूं। –

+1

आपका स्वागत है। – BalusC

+6

ग्रेट संकेत! मुझे यह नहीं पता था और भविष्य में 100 घंटे बचाएगा :) स्टैक ओवरफ्लो के बारे में अच्छी बात: आप उन प्रश्नों से भी सीखेंगे जिन्हें आपने खुद से नहीं पूछा था! –

0

जावा समर्थन का इंतजार कर रहे हैं कोई सुंदर तरीका उपलब्ध नहीं है। हो सकता है कि आप हैंडलर के साथ लक्ष्य विधियों वाले प्रॉक्सी का उपयोग कर सकें और उन्हें बाकी सब कुछ सौंप सकें। बेशक आपको एक कारखाने का उपयोग करना होगा क्योंकि कोई कन्स्ट्रक्टर नहीं होगा।

3

कई इंटरफ़ेस को लागू करने के लिए एक तरीका है।

बस एक और से एक इंटरफ़ेस का विस्तार या इंटरफ़ेस है कि पूर्वनिर्धारित इंटरफ़ेस पूर्व फैली बनाएँ:

public interface PlnRow_CallBack extends OnDateSetListener { 
    public void Plan_Removed(); 
    public BaseDB getDB(); 
} 

अब हम इंटरफ़ेस है कि एक और इंटरफ़ेस फैली वर्ग बाहर में उपयोग करने के लिए बस है जो दो या दो से लागू करता है नए इंटरफ़ेस का उपयोग किया है अधिक इंटरफेस

public class Calculator extends FragmentActivity implements PlnRow_CallBack { 

    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 

    } 

    @Override 
    public void Plan_Removed() { 

    } 

    @Override 
    public BaseDB getDB() { 

    } 
} 

आशा है कि यह मदद करता है इस तरह के त्वरित और के लिए BalusC और लुकास को

संबंधित मुद्दे

 संबंधित मुद्दे