我尝试通过子类将接口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无法解决为某种类型”。 我对子类的泛型类和添加接口感到困惑......任何人都可以告诉我一些关于这个的事情吗?
答案 0 :(得分:2)
<T>
上的Comparable
告诉编译器可以将类与哪种类型进行比较。在您的情况下,如果您希望能够与其他SimpleEntryComparable
进行比较,则只需要implements Comparable<SimpleEntryComparable<K,V>>
(当然还需要compareTo
。)。
答案 1 :(得分:2)
chrylis' answer是正确的。在它下面,我看到你有这个评论:
但是在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
实现。这是对引用类型进行通用比较的唯一方法 - as chrylis points out,算术运算are only supported for primitives。