2011-02-25 10 views
5

-Xlint स्विच का उपयोग करने के बाद मुझे 2 चेतावनियां मिलीं। मैं इन चेतावनियों को कैसे हल कर सकता हूं?javac -Xlint से चेतावनियां मिलीं: अनचेक

test:quadrantRDBTemplate mymac$ javac -Xlint:unchecked -cp mysql-connector-java-5.0.jar:iucbrf.jar *.java 
QuadrantSystemRDB.java:271: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type java.util.HashMap 
    argMap.put(xKey, new UniformDistribution(-1, 1)); 
      ^
QuadrantSystemRDB.java:272: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type java.util.HashMap 
    argMap.put(yKey, new UniformDistribution(-1, 1)); 
      ^
2 warnings 

उत्तर

7

एक कच्चा प्रकार एक प्रकार है जिसमें एक प्रकार का तर्क हो सकता है, लेकिन चालू नहीं हुआ है। उदाहरण के लिए Map (और HashMap) क्रमशः कुंजी और मानों के प्रकार के लिए प्रकार पैरामीटर K और V हो सकते हैं।

तो आप यह इंगित करने के लिए Map<Integer,String> निर्दिष्ट कर सकते हैं कि मानचित्र में Integer ऑब्जेक्ट्स हैं और उन्हें String ऑब्जेक्ट्स पर मानचित्रित करता है।

यदि आप केवल Map का उपयोग करते हैं तो आप वह जानकारी प्रदान नहीं करते हैं। कच्चे प्रकार अधिकतर पिछड़े संगतता के लिए मौजूद हैं और नए कोड में उनका उपयोग करने का कोई कारण नहीं है।

समाधान: अपने Map पर उपयुक्त प्रकार प्रदान करें। आपके कोड के अनुसार, VUniformDistribution और KyKey और xKey का प्रकार होगा।

1

argMap के लिए जेनिक्स का उपयोग करें। मुझे लगता है कि QuadrantSystemRDB आपके कोड से है। यदि ऐसा नहीं है तो आप शायद ही कुछ भी कर सकते हैं :)

4

आपको जेनेरिक का उपयोग करना चाहिए !! अपने xKey प्रकार स्ट्रिंग है कहो, तो argMap घोषित रूप में: कहते हैं, (उदाहरण के लिए), '<' को छोड़ते हुए बिना और '>'

Map<String, UniformDist> argMap = new HashMap<String, UniformDist>() 
1

शायद, वह यह है कि क्योंकि आप एक सूची वस्तु घोषित करने के लिए की जरूरत है:

List<Integer> list = new ArrayList(); 

मैंने नेटबीन के बिना स्टैक में वस्तु घोषित करने की कोशिश की, और नेटबीन ने बिना किसी त्रुटि संदेश के मेरे कोड को संकलित किया। शायद, javac संकलक के साथ चीजें अलग हैं।

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