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)
请使用这个:
// 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)