2010-10-18 28 views
10
public class Sample<T>{ 

T data; 

    Sample(){ 

    data = ????; 

    } 

} 

कैसे मैं डेटा के लिए एक डिफ़ॉल्ट मान असाइन कर सकते हैं?जेनेरिक्स डिफ़ॉल्ट निर्माता जावा

+0

की डुप्लिकेट:: उदाहरण के लिए http://stackoverflow.com/questions/182636/how-to-determine-the-class-of-a-generic-type – Nicolas

उत्तर

6

आप नहीं कर सकते। रनटाइम पर Tis erased टाइप करें, ताकि आप इसे तुरंत चालू नहीं कर सकें।

आप Sample(..) निर्माता के लिए एक Class तर्क पारित, तो आप कॉल कर सकते हैं clazz.newInstance()

+6

* "आप नहीं कर सकते।" * ... जब तक कि डिफ़ॉल्ट मान 'शून्य' न हो। :-) –

+0

हाँ, यह स्पष्ट है :) – Bozho

8

Bozho सही है (आप नहीं कर सकते)। यदि आप निश्चित रूप से इसे किसी मान के साथ शुरू करना चाहते हैं, तो उस मान को कन्स्ट्रक्टर को तर्क दें।

public class Sample<T> { 
    T data; 
    Sample(T data) { 
    this.data = data; 
    } 
} 
संबंधित मुद्दे