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>();