java.util.Collections上的Java泛型警告

IAm*_*aja 11 java generics collections

我有一个方法:

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

    return toSort;
}
Run Code Online (Sandbox Code Playgroud)

这会产生一个警告:

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

Eclipse说修复警告的唯一方法是添加@SuppressWarnings("unchecked")到我的sortStuff方法中.对于Java本身内置的东西来说,这似乎是一种糟糕的方式.

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

Per*_*ror 42

Collections.sort(List<T>)期望T必须实施Comparable<? super T>.它似乎Stuff是实现Comparable但不提供泛型类型参数.

请务必声明:

public class Stuff implements Comparable<Stuff>
Run Code Online (Sandbox Code Playgroud)

而不是这个:

public class Stuff implements Comparable
Run Code Online (Sandbox Code Playgroud)


Ale*_*pac 6

请使用这个:

// Bad Code
public class Stuff implements Comparable{

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

}
Run Code Online (Sandbox Code Playgroud)

或这个?

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

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

}
Run Code Online (Sandbox Code Playgroud)