2012-10-02 11 views
6

मान लीजिए के साथ सामान्य वर्ग का विस्तार मैं दो वर्गों है:जावाडोक जब गैर सामान्य वर्ग

abstract class GenericA<E> { 
    public void go(E e) {...} 
} 

public class IntegerA extends GenericA<Integer> { 
} 

ध्यान दें कि GenericA पैकेज-निजी और सामान्य है, और IntegerA सार्वजनिक और साधारण नहीं है।

अब, जब मैं सार्वजनिक जावाडोक (ग्रहण का उपयोग कर), मैं IntegerA तरीकों अनुभाग में निम्न देखना उत्पन्न:

public void go(E e) 

समस्या यह है कि जावाडोक के पाठक पता नहीं क्या E है कि है, यानी, EInteger का प्रतिनिधित्व करता है। मैं नहीं बल्कि जावाडोक कहना

public void go(Integer e) 

वहाँ जावाडोक तरह से मैं यह करना चाहते हैं व्यवहार करते हैं बनाने के लिए एक रास्ता है के लिए होता है?

+0

आपका जावडोक सुपरक्लास कहता है क्या है? मैंने बस अपनी मशीन पर यह कोशिश की और आपको वही समस्या मिली जो आपने किया था, लेकिन यह भी गलत तरीके से कहा गया कि सुपर क्लास 'ऑब्जेक्ट' था। – Dunes

+0

यह भी कहता है कि सुपर क्लास मेरे लिए 'ऑब्जेक्ट' है। लेकिन चूंकि मैंने सार्वजनिक रूप से 'जेनेरिक' को पैकेज-प्राइवेट के रूप में घोषित किया है, मेरी राय यह है कि यह सही व्यवहार है। जब मैं सार्वजनिक रूप से 'जेनेरिक' घोषित करता हूं, तो जावाडोक का कहना है कि 'इंटेगरए' का सुपर प्रकार 'जेनेरिक ' – Blaine

+1

आह है, फिर मुझे समस्या दिखाई देती है। 'Go (Integer e)' हस्ताक्षर (जैसा कि प्रतिबिंब द्वारा दिखाया जाएगा) के साथ कोई वास्तविक विधि मौजूद नहीं है। तो जावाडोक झूठ बोल रहा होगा अगर उसने उस विधि हस्ताक्षर को निर्दिष्ट किया है, भले ही वह कंपाइलर जोर दे, वह ऐसा नहीं है जिस पर रनटाइम जोर दे रहा है ... मुश्किल ... मुझे लगता है कि आपके पास जवाब है जो आपको चाहिए हालांकि। – Dunes

उत्तर

3

इंटीजर के साथ IntegerA में विधि को ओवरराइड विधि है और फिर सुपर विधि कॉल करें।

@Override 
public void go(Integer e) { 
    super.go(e); 
} 
संबंधित मुद्दे