我从Java Version 8中得到错误:“使用未经检查或不安全的操作”。
问题似乎来自Collections.sort()
,但问题是什么?我检查了Java Doc,一切似乎没问题,但参数是List
,但就我而言,ArrayList
是List
?
import java.util.ArrayList;
import java.util.Collections;
public class Driver
{
public static void test()
{
ArrayList<Person> persons = new ArrayList<Person>();
persons.add(new Person("Hans", "Car License"));
persons.add(new Person("Adam", "Motorcycle License"));
persons.add(new Person("Tom", "Car License"));
persons.add(new Person("Kasper", "Car License"));
System.out.println(persons);
Collections.sort(persons);
System.out.println(persons);
System.out.println(Collections.max(persons));
System.out.println(Collections.min(persons));
}
}
答案 0 :(得分:8)
我怀疑你的班级Person
是这样声明的:
class Person implements Comparable {
...
@Override
public int compareTo(Object o) {
...
}
}
将其更改为
class Person implements Comparable<Person> {
...
@Override
public int compareTo(Person o) {
...
}
}
请勿使用rawtypes。
答案 1 :(得分:0)
当编译器无法使用Generics检查集合是否以类型安全的方式使用时,会出现此错误。因此,您需要指定要存储在集合中的对象类型。
由于Tagir已经指出在声明类Person
时可能没有提供类型,因此编译器会给出错误。如果您需要更详细的信息,可以使用"-Xlint:unchecked"
开关重新编译。