Java 大于泛型类型上未定义的运算符,尽管扩展并实现了Comparable
我搜索并发现了几个类似问题的实例,但明显的解决方案已经实现,所以我有点不知所措。仅供参考:这是一个家庭作业,如果有关系的话Java 大于泛型类型上未定义的运算符,尽管扩展并实现了Comparable,java,comparable,Java,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)
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;
}
}
公共类条目实现
可比{
受保护的K密钥;
保护V值;
受保护的入口(K,V){
key=k;
值=v;
}
公钥{
返回键;
}
公共价值{
返回值;
}
//重写toString方法
//toString方法应将条目打印为:
//
@凌驾
公共字符串toString(){
返回“+key.toString()+”,“+value.toString();
}
公共整数比较(其他条目){
如果(this.key>other.key)
返回1;
else if(this.key==other.key)
返回0;
其他的
返回-1;
}
}
我得到的错误是:
未为参数类型K,K”定义运算符>
在
compare to
方法的第一行中。Java与C/C++不同,在C/C++中可以重写/重载运算符。您必须使用方法表单
编辑:如果类型是诸如int或float之类的基本类型,则可以使用
,=
仅为基本数字类型定义。相反,因为K
是一个Compa>rable
,您可以调用其比较方法:
public int compareTo(Entry<K, V> other) {
return key.compareTo(other.key);
}
public int compareTo(其他条目){
返回key.compareTo(其他.key);
}
我想你的意思是“K是一个引用类型”,而不是“K是一个变量”。@AndersonVieira是的。很抱歉可能会混淆。非常感谢!这是一个非常有用且简洁的解释。