我正在尝试做这样的事情,但是Java不允许我这样做。我怀疑自己做错了什么,但我真的不知道该怎么办。

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

似乎认为T应该是一个类,而不是泛型。我的问题类似于this one,但不完全相同。我要拥有的所有类型的要点是,我可以将其与同一子类型的其他事物进行比较,而又不能将其与任何其他PopulationMember对象进行比较。

最佳答案

试试这个:

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

}

填写类型参数时(就像对Comparable一样),您需要提供一个类。如果您不希望它成为特定的类,则可以参数化您的接口。

10-05 21:54