1

我尝试通过子类将接口 Comparable 添加到 SimpleEntry 类。因为 SimpleEntry 是泛型类型,所以我使用了这个:

public class SimpleEntryComparable<K, V> extends SimpleEntry<K, V> implements
        Comparable<T> {

    public SimpleEntryComparable(K arg0, V arg1) {
        super(arg0, arg1);
        // TODO Auto-generated constructor stub
    }
}

eclipse 抱怨“T 无法解析为类型”。我对子类泛型类和添加接口感到困惑......任何人都可以告诉我一些关于这个的事情吗?

4

2 回答 2

2

<T>on告诉编译器可以将Comparable类与什么类型进行比较。在您的情况下,如果您希望能够与其他SimpleEntryComparables 进行比较,您只需要implements Comparable<SimpleEntryComparable<K,V>>compareTo当然还有 !)。

于 2013-09-07T23:06:05.287 回答
2

chrylis 的回答是正确的。在它下面我看到你有这个评论:

但在 compareTo() 中,我想“返回 o.getKey() - this.getKey();”

根据此评论,听起来您想要以下内容:

public class SimpleEntryComparable<K extends Comparable<? super K>, V>
extends SimpleEntry<K, V>
implements Comparable<SimpleEntryComparable<K, V>> {

    @Override
    public int compareTo(final SimpleEntryComparable<K, V> other) {
        return getKey().compareTo(other.getKey());
    }
}

这确保它K与自身(或自身的某些超类型)具有可比性,以便您的代码可以委托给该类型的compareTo实现。这是对引用类型进行通用比较的唯一方法 -正如 chrylis 指出的那样,算术运算仅支持原语

于 2013-09-08T00:01:25.063 回答