java:警告:[unchecked] 對作為普通類型 java.util.HashMap 的成員的put(K,V) 的調用未經檢查
一、問題:學習HashMap時候,我做了這樣一個程序:
import java.util.HashMap;
public class testHashMap{
public static void main(String[] args)
{
HashMap hm = new HashMap();
hm.put("txtSearchProvince","北京");
hmPara.put("txtSearchCity","西安");
System.out.println("參數個數:" + hmPara.size());
}catch(Exception e){
System.out.print(e.getMessage());}
}
}//end class
編譯時:
c:\javac testHashMap.java
提示如下:
testHashMap.java 使用了未經檢查或不安全的操作。
要了解詳細信息,請使用 -Xlint:unchecked 重新編譯。
c:\javac -Xlintunchecked testHashMap.java
提示是:
testHashMap.java:8: 警告: [unchecked] 對作為普通類型 java.util.HashMap 的成員的
put(K,V) 的調用未經檢查
二、修改辦法:
HashMap hm = new HashMap();
改為--HashMap<String,String> hm = new HashMap<String,String>();
---->這里面的String 又代表了什么呢?
三、查資料:
你的JDK版本是1.5,1.5是支持泛型的,但你的寫法不是用泛型的寫法,所以編譯的時候出了警告。
將你的protected static ArrayList table=new ArrayList(); 改成
protected static ArrayList<BigInteger> table=new ArrayList<BigInteger>();
這里說了一個[泛類型]的概念
四、引申:
HashMap<String,Integer> hm = new HashMap<String,Integer>();
hm.put("txtSearchProvince",1);
這也是1.5的新特性,自動封裝成了Integer了 ,當然也可以自動把Integer變成int
這個可以通用:HashMap<Object, Object> hmPara = new HashMap<Object, Object>();