0
import java.util.*;
class pqr
{
public static void main(String ab[])
{
List<Integer> ts=new ArrayList<Integer>();
for(int i=0;i<10;i++)
ts.add((int)(Math.random()*1000));
System.out.println(ts);

class RSO implements Comparator<Integer>
{
public int compare(Integer i,Integer j)
{
return j-i;
}
}
RSO rs=new RSO();
Collections.sort(ts,rs);
System.out.println(ts);

Comparator fs=(Comparator<Integer>)Collections.reverseOrder(rs); // Same result with casting or without casting
Collections.sort(ts,fs);
System.out.println(ts);
}
}

这段代码给了我预期的结果,但是在编译时它显示了从末尾开始的第 5 行的以下警告消息:

Note: 5.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

无论有没有强制转换,我都会收到相同的警告,请帮助我删除警告。

4

3 回答 3

5

问题不在于演员阵容,而在于您将其分配给原始Comparator参考。将类型参数放在您的fs引用上:

Comparator<Integer> fs = Collections.reverseOrder(rs);

演员表是不必要的,可以删除。

于 2013-10-02T15:50:36.420 回答
3

问题不是来自演员阵容,而是来自 Comparator 的通用参数

//This one is not parameterized
Comparator fs=(Comparator<Integer>)Collections.reverseOrder(rs); // Same result with casting or without casting
Collections.sort(ts,fs)

用。。。来代替

Comparator<Integer> fs=(Comparator<Integer>)Collections.reverseOrder(rs); 
于 2013-10-02T15:50:21.917 回答
1

使用Comparator<Integer> fs = Collections.reverseOrder(rs);.

于 2013-10-02T15:52:49.743 回答