为什么java.util.Collections.swap中没有警告(List <! - ? - >,int,int)?

时间:2014-05-15 13:18:34

标签: java generics

我知道在Why does Collections.swap copy the input list?已经提出并回答了类似的问题,但我提出的问题有些不同:

考虑java.util.Collections.swap()

的JDK1.7源代码
public static void swap(List<?> list, int i, int j) {
    final List l = list;
    l.set(i, l.set(j, l.get(i)));
}

显然已经声明了List l别名,因为你无法写入List列表,无论如何我无法理解为什么没有发出使用rawtype(List l)的警告,以及在这样的unchecked中执行set()方式。

对我来说更奇怪的是,如果我在我自己的任何课程中盲目地复制该方法,那么我会得到警告(如我所料),并且必须使用@SuppressWarnings进行注释({“rawtypes”,“unchecked”} )

我在集合类上看不到@SuppressWarnings注释作为一个整体[仅在某些方法上 - 而不是在swap()上)所以我没有解释这种行为。

我错过了一些基本的东西吗?

[我正在使用Eclipse Kepler]

2 个答案:

答案 0 :(得分:0)

它只是一个源代码,可能错过了包括@SuppressWarnings。 实际上,如果您使用的是Java编译器1.5或更高版本,则会收到此类警告

答案 1 :(得分:0)

没有为参数化类型分配原始类型;所以没有@SW rawtypes。

没有外卡的铸造;所以没有@SW取消选中。