2015-02-26 5 views
6

में कार्यान्वित करते समय जेनेरिक प्रकारों को रखते हुए मैंने सामान्य प्रकार के प्रश्नों के माध्यम से बहुत सी खोज की है और मुझे कुछ भी नहीं मिला है जिसने मुझे यह पता लगाने में मदद की है कि मैं यहां क्या कर रहा हूं। मेरे पास एक इंटरफ़ेस निम्नानुसार है:वर्ग

public interface SortAnalysis<E extends Comparable<? super E>> 
{ 
    public long analyzeSort(ArrayList<E> list); 
} 

अब, अगला चरण एक कक्षा बना रहा है जो इस इंटरफ़ेस को लागू करता है। यह विशेष रूप से कक्षा एक प्रविष्टि प्रकार का उपयोग करने के लिए जा रहा है और मैं ArrayList प्रकार 'ई' सामान्य रखने की जरूरत है, तो मैं चीजों के सभी प्रकार की कोशिश की और साथ समाप्त हो गया है:

public class InsertionSort<E extends Comparable<? super E>> implements SortAnalysis { 

@Override 
public long analyzeSort(ArrayList list) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

मेरे समस्या यह है कि जब मैं पैरामीटर

ArrayList<E> list 

एक सुपरटेप विधि को लागू करने के बारे में संकलक पकड़ मुझे करने का प्रयास करें।

मैं वास्तव में मदद की किसी भी दिशा की सराहना करता हूं। धन्यवाद!

** मैं इसे अभी तक उत्तर के रूप में चिह्नित नहीं कर सकता, लेकिन यह है। मुझे लगता है कि मेरी समस्या किया गया था कि मैं सामान्य वर्ग के नाम के बाद सूचीबद्ध टाइपिंग नहीं था जब मैं

SortAnalysis<E> 

था। **

+3

दूसरे कोड स्निपेट में, यह 'SortAnalysis ' और 'ArrayList ' होना चाहिए। –

+0

धन्यवाद। एक जादू की तरह काम किया। मैंने निश्चित रूप से सोचा था कि मैंने पहले से ही कोशिश की है, लेकिन इससे पहले कि मैंने > InsertionSort के बाद यह हो सकता है। – sebe

उत्तर

3

public class InsertionSort<E extends Comparable<? super E>> 
     implements SortAnalysis<E> { 

जब में SortAnalysis<E> तरह प्रकार निर्दिष्ट करें आप इसे छोड़ देते हैं आपके पास raw-type है और एक सामान्य संस्करण नहीं है।

+0

धन्यवाद इलियट - जैसा कि मैंने उपरोक्त टिप्पणी में उल्लेख किया था कि किसी ने मुझे एक ही बात बताई है, मुझे यकीन था कि मैंने पहले ही कोशिश की थी और जब यह काम नहीं करता था तो परेशान था। मैं सोच रहा हूं कि अगर मैं उस समय सम्मिलन के बाद सभी <ई विस्तारित हो रहा था .... >> गायब हो गया था। – sebe

3

अपनी InsertionSort कक्षा घोषित करते समय, आप SortAnalysis कक्षा का कच्चा रूप कार्यान्वित कर रहे हैं। इसका मतलब है कि analyzeSortSortAnalysis पर ठीक से ओवरराइड नहीं कर रहा है जब आप पैरामीटर पर <E> शामिल करते हैं।

implements खंड में एक प्रकार पैरामीटर की आपूर्ति करें।

class InsertionSort<E extends Comparable<? super E>> 
    implements SortAnalysis<E> { 
//       ^^^ 

अब आप list पैरामीटर में <E> शामिल कर सकते हैं।

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