我搜索并发现了几个类似问题的例子,但已经实施了明显的解决方案,所以我有点亏。仅供参考:这是一项家庭作业,如果重要的话。
public class Entry<K extends Comparable<K>, V> implements
Comparable<Entry<K, V>> {
protected K key;
protected V value;
protected Entry(K k, V v) {
key = k;
value = v;
}
public K key() {
return key;
}
public V value() {
return value;
}
// override toString method
// toString method should print the entry as:
// <key,value>
@Override
public String toString() {
return "<>" + key.toString() + ", " + value.toString();
}
public int compareTo(Entry<K, V> other) {
if (this.key > other.key)
return 1;
else if (this.key == other.key)
return 0;
else
return -1;
}
}
我得到的错误是:
运营商&gt;未定义参数类型K,K&#34;
在compareTo
方法的第一行。
答案 0 :(得分:6)
Java不支持运算符重载 - <
,>
,<=
和>=
仅为原始数字类型定义。相反,由于K
是Comparable
,您可以调用其compareTo
方法:
public int compareTo(Entry<K, V> other) {
return key.compareTo(other.key);
}
答案 1 :(得分:3)
Java与C / C ++不同,您可以在其中覆盖/重载运算符。你必须使用方法表格。
编辑:如果类型是基本类型,如int或float,则可以使用&lt;和&gt;运营商。但由于K是一个引用,就像整数类CLASS一样,你不能。