考虑代码:
public abstract class Item<T> implements Comparable<T>
{
protected T item;
public int compareTo(T o)
{
return 0; // this doesn't matter for the time being
}
}
public class MyItem<T> extends Item<String>
{
T object;
}
public class Foo<T>
{
protected ArrayList<T> list;
}
public class Bar<V> extends Foo<MyItem<V>>
{
public void sort()
{
Collections.sort(list);
}
}
排序调用给出了错误:
绑定不匹配:Collections 类型的泛型方法 sort(List< T >) 不适用于参数 (ArrayList< MyItem< T > >)。推断的类型 MyItem< T > 不是有界参数 < T extends Comparable< 的有效替代品?超级T > >
为什么这是错误的?
如果MyItem<V>
实现Comparable
了,为什么它不是替代品?
抱歉,如果有人问过这个问题,但我觉得这个问题有些具体。