idea提示集合类型没有参数
在练习集合的时候,使用在idea中遇到了这样一个问题
package collection; import java.util.*; public class GetMap { } class MapDemo2 { public static void main(String[] args) { Map<String,String> map = new HashMap<String,String>(); map.put("01","diyi"); map.put("02","dier"); map.put("03","disan"); map.put("04","disi"); Set<Map.Entry<String,String>> entrySet = map.entrySet(); //提示Error:(18, 12) java: 类型collection.Set不带有参数 Iterator<Map.Entry<String,String>> it = entrySet.iterator(); while(it.hasNext()) { Map.Entry<String,String> me = it.next(); String key = me.getKey(); String value = me.getValue(); System.out.println(key+":"+value); } } }
如代码所示,idea提示错误,说Error:(18, 12) java: 类型collection.Set不带有参数
一次我就在Windows命令行和eclipse中分别测试了相同的代码,结果均没有错误。开始以为是idea引入的jdk版本问题后来发现并不是,Windows命令行和eclipse以及idea用的都是jdk10.0.2
后来发现了问题:
后来找了很久才发现了问题,出现这样的问题显然是运行环境识别错误了Set类,它没有将此处的Set认定为java.Util.Set,而是认成了其他地方的Set,果然,我在相同的Collection包中发现了自定义的一个Set类(因为这个包中定义的类太多,开始没有发现)
解决办法呢,就是显示的指明引用,不要用java.util.*; 而是用java.util.Set;这样运行环境会优先寻找设个Set,就不会找错了。
package collection; import java.util.HashMap; import java.util.Iterator; import java.util.Set; import java.util.Map; public class GetMap { } class MapDemo2 { public static void main(String[] args) { Map<String,String> map = new HashMap<String,String>(); map.put("01","diyi"); map.put("02","dier"); map.put("03","disan"); map.put("04","disi"); Set<Map.Entry<String,String>> entrySet = map.entrySet(); //不再提示错误 Iterator<Map.Entry<String,String>> it = entrySet.iterator(); while(it.hasNext()) { Map.Entry<String,String> me = it.next(); String key = me.getKey(); String value = me.getValue(); System.out.println(key+":"+value); } } }
总结:1.引入包是尽量单点引入,这样编译更快,而且不容易类名起冲突
2.自定义名字的时候一定不要嫌麻烦,尽量定义较长的别致的有意义的名字,不要和已有的类名相同。