Collections.sort(),给出“未经检查或不安全的操作”错误?

时间:2015-09-29 06:39:29

标签: java collections

我从Java Version 8中得到错误:“使用未经检查或不安全的操作”。

问题似乎来自Collections.sort(),但问题是什么?我检查了Java Doc,一切似乎没问题,但参数是List,但就我而言,ArrayListList

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));
    }
}

2 个答案:

答案 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"开关重新编译。