Greater Than Operator Undefined on Generic Type,尽管扩展和实现了 Comparable
Greater Than Operator Undefined on Generic Type, Despite extending and implementing Comparable
我搜索并发现了几个类似问题的实例,但明显的解决方案已经实施,所以我有点不知所措。仅供参考:如果重要的话,这是一项家庭作业。
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;
}
}
我得到的错误是:
The operator > is undefined for the argument type(s) K, K"
在compareTo
方法的第一行。
Java 与可以使用 override/overload 运算符的 C/C++ 不同。您必须使用方法表单。
编辑: 如果类型是基本类型,如 int 或 float,您可以使用 < 和 > 运算符。但是因为 K 是一个引用,就像 Integer CLASS,你不能。
Java 不支持运算符重载 - <
、>
、<=
和 >=
仅为原始数字类型定义。相反,由于 K
是 Comparable
,您可以调用它的 compareTo
方法:
public int compareTo(Entry<K, V> other) {
return key.compareTo(other.key);
}
我搜索并发现了几个类似问题的实例,但明显的解决方案已经实施,所以我有点不知所措。仅供参考:如果重要的话,这是一项家庭作业。
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;
}
}
我得到的错误是:
The operator > is undefined for the argument type(s) K, K"
在compareTo
方法的第一行。
Java 与可以使用 override/overload 运算符的 C/C++ 不同。您必须使用方法表单。
编辑: 如果类型是基本类型,如 int 或 float,您可以使用 < 和 > 运算符。但是因为 K 是一个引用,就像 Integer CLASS,你不能。
Java 不支持运算符重载 - <
、>
、<=
和 >=
仅为原始数字类型定义。相反,由于 K
是 Comparable
,您可以调用它的 compareTo
方法:
public int compareTo(Entry<K, V> other) {
return key.compareTo(other.key);
}