2013-10-02 3 views
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-й линии от конца:статический Компаратор Collections.reverseOrder (Comarator) показывая предупреждение

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

I я получаю такое же предупреждение с или без кастинга, пожалуйста, помогите мне удалить предупреждение.

ответ

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); 
+0

ohh noo !! спасибо, кстати ... – user1926364

5

Проблема не литая, это тот факт, что вы присвоив его необработанной ссылке Comparator. Установите параметр типа на вашу fs ссылки:

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

Бросок ненужный и может быть удален.

1

Использование Comparator<Integer> fs = Collections.reverseOrder(rs);.

Смежные вопросы