2011-12-30 6 views
55

मैं एक KeyValue वर्ग लेकिन सामान्य तरीके से बनाना चाहते हैं और इस मैं क्या लिखा है यह है: ", इस टोकन के बाद उम्मीद पहचानकर्ता" "टोकन पर सिंटेक्स त्रुटि">जावा में एक सामान्य वर्ग के लिए एक सामान्य कन्स्ट्रक्टर कैसे बनाया जाए?

:

public class KeyValue<T,E> 
{ 

    private T key; 
    private E value; 
    /** 
    * @return the key 
    */ 
    public T getKey() { 
     return key; 
    } 
    /** 
    * @param key the key to set 
    */ 
    public void setKey(T key) { 
     this.key = key; 
    } 
    /** 
    * @return the value 
    */ 
    public E getValue() { 
     return value; 
    } 
    /** 
    * @param value the value to set 
    */ 
    public void setValue(E value) { 
     this.value = value; 
    } 

    public KeyValue <T, E>(T k , E v) // I get compile error here 
    { 
     setKey(k); 
     setValue(v); 
    } 
} 

त्रुटि का कहना है

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

+0

@dasblinkenlight सही जवाब है लिखा था। बस यह उल्लेख करना चाहता था कि AbstractMap.SimpleEntry जो आप चाहते हैं वह करता है। – user949300

+0

पर्याप्त प्रतिनिधि के साथ कोई व्यक्ति प्रश्न की वर्तनी को सही तरीके से सही कर सकता है? –

उत्तर

68

आपको कन्स्ट्रक्टर के हस्ताक्षर से <T, E> को हटाने की आवश्यकता है: यह पहले से ही निहित है।

public KeyValue(T k , E v) // No compile errors here :) 
{ 
    setKey(k); 
    setValue(v); 
} 
+0

आप सीमा का उपयोग कर सकते जहां भी संभव हो, उदाहरण के के लिए सार्वजनिक वर्ग KeyValue <टी संख्या का विस्तार, ई फैली SomeClass> ताकि यह अधिक प्रकार सुरक्षित है –

+0

@PragalathanM निश्चित रूप से सच है कि है, लेकिन यह एक छोटी सी के साथ मदद के परे रास्ता चला जाता है ओपी में वाक्यविन्यास त्रुटि। – dasblinkenlight

+4

बस इंगित करना चाहते हैं, इसलिए ओपी जानता है: यहां पर निर्माता * सामान्य * नहीं है। कक्षा है। जेनेरिक तरीके (और कन्स्ट्रक्टर) और सामान्य वर्ग पूरी तरह से अलग चीजें हैं। – Darkhogg

3

लिखें निर्माता ठीक उसी तरह आप अन्य तरीकों

public KeyValue(T k , E v) 
    { 
     setKey(k); 
     setValue(v); 
    } 
+0

वह संकलित नहीं करेगा। आपके पास टाइप नाम के बाद प्रकार की घोषणा है, इसे पहले एक सीटीआर में होना चाहिए। – Saish

+0

mmm ... मुझे ऐसा नहीं लगता) –

+0

इसे जावैक के साथ आज़माएं। – Saish

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