我想创建一个泛型类,它采用一些可比较的泛型类型的元素。所以我这样做:
public class Foo<T extends Comparable<T>>
在课堂上Foo
我有类似的东西:
public void bar(T t)
我确信我可以编写这样的代码:t.compareTo(v)
.
问题1:为什么在使用泛型时我们有extends
而不是implements
接口?Comparable
不是一个类。
\\
现在假设我想创建另一个与上述类似的类也实现该bar
方法。我想到了创建这个界面:
public interface Face<T extends Comparable<T>> {
public void bar(T t);
}
然后我改变类Foo
来实现Face
(public class Foo<T extends Comparable<T>> implements Face
)。
问题2:执行此操作时出现以下编译错误:
Foo 类型的方法 bar(T) 必须覆盖或实现超类型方法。
为什么是这样?
当我告诉 Eclipse 时,add the unimplemented methods
我得到:
public void bar(Comparable t)
而不是... bar(T t)
.