2010-03-10 16 views
5

मैं निम्नलिखित कोड है:यहां अनचेक और असुरक्षित ऑपरेशन क्या है?

private static final Set<String> allowedParameters; 
static { 
    Set<String> tmpSet = new HashSet(); 
    tmpSet.add("aaa"); 
    allowedParameters = Collections.unmodifiableSet(tmpSet); 
} 

और यह कारण:

Note: mygame/Game.java uses unchecked or unsafe operations. 
Note: Recompile with -Xlint:unchecked for details. 

और जब मैं सुझाव के विकल्प के साथ पुन: संयोजित मैं एक सूचक (^) को देखने के "नया" पर इशारा करते हुए HashSet(); के सामने ।

क्या कोई जानता है कि यहां क्या हो रहा है?

उत्तर

9

हां, आप यह बताए बिना एक नया हैशसेट बना रहे हैं कि इसमें किस श्रेणी में होना चाहिए, और फिर जोर देकर कि इसमें तार हैं। इसे

Set<String> tmpSet = new HashSet<String>(); 
2

ये संदेश तब होते हैं जब आप नई जे 2 एसई 1.5 फीचर - जेनेरिक का समर्थन करने वाले वर्गों का उपयोग कर रहे होते हैं। जब आप संग्रह की सामग्री के प्रकार को स्पष्ट रूप से निर्दिष्ट नहीं करते हैं तो आप उन्हें प्राप्त करते हैं।

उदाहरण के लिए:

List l = new ArrayList(); 
list.add("String"); 
list.add(55); 

आप एक ही डेटा का एक संग्रह करना चाहते हैं टाइप करें द्वारा संदेशों से छुटकारा पाने के कर सकते हैं:

List<String> l = new ArrayList<String>(); 
list.add("String"); 

आप एक से अधिक डेटा प्रकार डाल करने के लिए की जरूरत है एक बार संग्रह में, आप करते हैं:

List<Object> l = new ArrayList<Object>(); 
list.add("String"); 
list.add(55); 

यदि आप -Xlint जोड़ते हैं: कंपाइलर को अनचेक पैरामीटर, यो आपको समस्या के बारे में विशिष्ट विवरण मिलते हैं। अधिक जानकारी के लिए

यहां देखें: http://forums.sun.com/thread.jspa?threadID=584311

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