我收到这个警告,这是代码:
Hashtable nu=new Hashtable();
Hashtable ns=new Hashtable();
nu.put(new String("postmaster"),new String("admin"));
ns.put(new String("SMTP"),new String(""));
ns.put(new String("POP3"),new String(""));
ns.put(new String("EMAIL"),new String(""));
ns.put(new String("USER"),new String(""));
ns.put(new String("PASS"),new String(""));警告:未经检查的未检查调用将(K,V)作为原始类型Hashtable的me
发布于 2013-10-29 12:28:28
Hashtable是一个泛型类型。在使用类型参数时,应传递类型参数,从而使用相应的参数类型。只使用类名Hashtable是原始类型,并且不鼓励使用,除非在某些地方必须使用它们。
因此,您将实例化对象如下:
Hashtable<String, String> nu = new Hashtable<String, String>();但是,您也应该避免使用Hashtable。原因是,Hashtable的每一个操作都是同步的,这是您真正不需要的。这就不必要地让执行缓慢了。最好用HashMap代替。你可以这样使用它:
Map<String, String> map = new HashMap<String, String>();
Map<String, String> map2 = new HashMap<>(); // Valid from Java 7 onwards除此之外,您不需要使用String创建一个新的new String(...)对象,同时将它们添加到映射中。只需使用字符串文本,以避免不必要的对象创建:
nu.put("postmaster", "admin"); // Will work fine相关:
发布于 2013-10-29 12:26:36
Hashtable是一个具有两个泛型类型参数的泛型类。
尝试:
Hashtable<String, String> nu = new Hashtable<>();不需要指定泛型参数(本例中为String和String )。但是,如果不指定它们,则会得到您提到的警告。
有关更多细节,请参见Hashtable javadoc和关于oracle java文档中泛型的一节。。
发布于 2013-10-29 12:26:55
如果在声明Hashtable时要使用泛型类型,则警告将消失:
Hashtable<String, String>或者更好的是,编写接口代码:
Map<String, String> ns = new Hashtable<String, String>();也许您可以找到一个比Hashtable更好的地图实现,例如HashMap
Map<String, String> ns = new HashMap<String, String>();https://stackoverflow.com/questions/19658126
复制相似问题