【问题标题】: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>  {
          ...
      }
      

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

      【讨论】:

        猜你喜欢
        • 2021-03-24
        • 1970-01-01
        • 2010-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-22
        • 2017-03-29
        相关资源
        最近更新 更多