SCJP subSet()必须转换为(TreeSet <integer>)</integer>

时间:2013-02-05 18:03:20

标签: java collections scjp treeset

我发现了一个奇怪的SCJP问题,起初看起来好像回答得正确:

TreeSet<Integer> s = new TreeSet<Integer>();
TreeSet<Integer> subs = new TreeSet<Integer>();
for(int i = 606; i < 613; i++)
    if(i%2 == 0) s.add(i);
subs = (TreeSet)s.subSet(606,true, 630,true); 
s.add(629); 
s.add(630); 
System.out.println(s + " " + subs);

我与其他人分享了这样的观点,即打印[606,608,610,612,629,630] [606,630]。我尝试编译它,我惊讶地发现代码给出了一个带有警告的编译错误:

__[unchecked] unckecked conversion__
found: java.util.TreeSet
required: java.util.TreeSet(java.lang.Integer) 

如果我像这样抛出s.subset,它会编译:

subs = (TreeSet<Integer>)s.subSet(606,true, 630,true); 

我在网上发现了与此类似的各种示例,没有人说这段代码不能编译。我对这里的正确答案感到困惑

我正在用编译器1.6&gt;编译它。所以它不应该是编译器版本问题

编辑:简短的答案是肯定的,IT编译和长篇答案是:阅读接受的答案:)

1 个答案:

答案 0 :(得分:0)

这不是编译时错误。这确实是警告消息,因为您以这种方式编译了代码
javac -Xlint:unchecked MyTreeSet.java

其中,MyTreeSet.java是您的java文件的名称。 />

  

您仍然可以在您的帐号中成功生成类文件   直接工作