我正在尝试做这样的事情,但Java不会让我这样做。我怀疑我只是做错了什么,但我真的不知道是什么。
public interface PopulationMember extends Comparable<T extends PopulationMember> {
int compareTo(T o);
T merge(T o);
// Some other stuff
}
似乎认为T应该是一个类,而不是泛型类型。我的问题类似于this one,但不完全相同。所有这一点,我想要一个类型,我可以将它与同一子类型的其他东西进行比较,而无法将它们与任何其他PopulationMember对象进行比较。
答案 0 :(得分:4)
试试这个:
public interface PopulationMember<T extends PopulationMember> extends Comparable<T> {
int compareTo(T o);
T merge(T o);
// Some other stuff
}
当您填写类型参数时(就像您对Comparable
所做的那样),您需要提供一个类。如果您不希望它成为特定的类,您可以参数化您的界面。
答案 1 :(得分:4)
interface PopulationMember<T extends PopulationMember> extends Comparable<T> {
...
}
指定当前类(接口)的通用边界,而不是扩展边界。