为什么我不能用接口做这个?

时间:2010-02-17 15:37:04

标签: java generics interface

我正在尝试做这样的事情,但Java不会让我这样做。我怀疑我只是做错了什么,但我真的不知道是什么。

public interface PopulationMember extends Comparable<T extends PopulationMember>  {
    int compareTo(T o);
    T merge(T o);
    // Some other stuff
}

似乎认为T应该是一个类,而不是泛型类型。我的问题类似于this one,但不完全相同。所有这一点,我想要一个类型,我可以将它与同一子类型的其他东西进行比较,而无法将它们与任何其他PopulationMember对象进行比较。

2 个答案:

答案 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>  {
    ...
}

指定当前类(接口)的通用边界,而不是扩展边界。