【发布时间】:2013-11-02 01:20:44
【问题描述】:
我想创建一个泛型类,它采用一些可比较的泛型类型的元素。所以我这样做:
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)。
【问题讨论】:
标签: java generics interface extends implements