【问题标题】:Why can't I do this with interfaces?为什么我不能用接口做到这一点?
【发布时间】:2010-02-17 15:37:03
【问题描述】:
我正在尝试做这样的事情,但 Java 不会让我这样做。我怀疑我只是做错了什么,但我真的不知道是什么。
public interface PopulationMember extends Comparable<T extends PopulationMember> {
int compareTo(T o);
T merge(T o);
// Some other stuff
}
似乎认为 T 应该是一个类,而不是泛型类型。我的问题类似于this one,但并不完全相同。关键是我想要一个类型,我可以将它与相同子类型的其他事物进行比较,而不能将它们与任何其他 PopulationMember 对象进行比较。
【问题讨论】:
标签:
java
generics
interface
【解决方案1】:
试试这个:
public interface PopulationMember<T extends PopulationMember> extends Comparable<T> {
int compareTo(T o);
T merge(T o);
// Some other stuff
}
当您填写类型参数时(就像您为Comparable 所做的那样),您需要提供一个类。如果你不希望它是一个特定的类,你可以参数化你的接口。
【解决方案2】:
interface PopulationMember<T extends PopulationMember> extends Comparable<T> {
...
}
您在当前类(接口)上指定通用边界,而不是在扩展类上。