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.
无论是否有施法,我都会收到同样的警告,请帮我删除警告。
答案 0 :(得分:5)
问题不在于演员,而是您将其分配给原始Comparator
参考。将类型参数放在fs
引用上:
Comparator<Integer> fs = Collections.reverseOrder(rs);
演员表是不必要的,可以删除。
答案 1 :(得分:3)
问题不是来自演员,而是来自比较器的通用参数
//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);
答案 2 :(得分:1)
使用Comparator<Integer> fs = Collections.reverseOrder(rs);
。