00915132
出现错误:使用了未经检查或不安全的操作。|已经解决,但还请高人帮忙解释
虽然错误,但仍有结果出现。请问是怎么回事?
错误提示:注意:G:/hobby/prog/java/exercise/test0207/src/test0207/test0207.java 使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
源代码如下:package test0207;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class test0207 {
public static void main(String[] args) {
int i,j=0;
Random r=new Random();
Set nums=new HashSet(); //估计错误原因
while((nums.size())<n){
i=Math.abs(r.nextInt())%10000;
nums.add(new Integer(i));
j++;
}
System.out.println(j);
}
final static int n=5000;
}
[[i] 本帖最后由 00915132 于 2008-2-13 23:10 编辑 [/i]]
fl3w
[quote]原帖由 [i]00915132[/i] 于 2008-2-13 23:09 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7958271&ptid=1052493][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
将
Set nums=new HashSet();
改为
Set nums=new HashSet();
即可,
加个等于做了个标记,这个集合就只能放这样的对象
但还是不明白…… [/quote]
有什么不明白的,就是原来啥都可以放的,现在给你定死了,用某个“牛人”的话说就是“为了编译阶段时就能发现错误”:outu: :outu: :outu:
你也可以像我一样,认为当初设计这个特征的人脑袋瓜进水了。
fecasmoy123
[quote]原帖由 [i]fl3w[/i] 于 2008-2-14 09:05 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7958732&ptid=1052493][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
有什么不明白的,就是原来啥都可以放的,现在给你定死了,用某个“牛人”的话说就是“为了编译阶段时就能发现错误”:outu:utu:" /> :outu:utu:" /> :outu:utu:" />
你也可以像我一样,认为当初设计这个特征的人脑袋瓜进水了。 [/quote]
这里是泛型里面的类型限定,这样的代码更安全,
是着想一想下面这段代码,
Set iii = new Set();
iii.add("hello");
iii.add(new Integer(1));
…………
给iii中放的对象你知道什么时候是String,什么时候是Integer的?
是可以强制类型转换,
但是无法确定具体的类型,因为往里面放的东西的类型是随机的,(当然集合中的元素是单一类型时,就不存在这个问题了,所以就有了类型限定)