Java 泛型警告 java.util.Collections

2022-09-03 16:26:21

我有一个方法:

public List<Stuff> sortStuff(List<Stuff> toSort) {
    java.util.Collections.sort(toSort);

    return toSort;
}

这将生成一个警告:

Type safety: Unchecked invocation sort(List<Stuff>) of the generic method sort(List<T>) of type Collections.

Eclipse说修复警告的唯一方法是添加到我的方法中。这似乎是一种与Java本身内置的东西有关的蹩脚方式。@SuppressWarnings("unchecked")sortStuff

这真的是我唯一的选择吗?为什么或为什么不呢?提前致谢!


答案 1

Collections.sort(List<T>) 期望必须实现 .它似乎确实实现了,但没有提供泛型类型参数。TComparable<? super T>StuffComparable

请务必声明以下内容:

public class Stuff implements Comparable<Stuff>

取而代之的是:

public class Stuff implements Comparable

答案 2

Do tou 使用这个:

// Bad Code
public class Stuff implements Comparable{

    @Override
    public int compareTo(Object o) {
        // TODO
        return ...
    }

}

还是这个?

// GoodCode
public class Stuff implements Comparable<Stuff>{

    @Override
    public int compareTo(Stuff o) {
        // TODO
        return ...
    }

}