Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 大于泛型类型上未定义的运算符,尽管扩展并实现了Comparable_Java_Comparable - Fatal编程技术网

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是一个引用,如Integer类,则不能使用。

Java不支持运算符重载-
=
仅为基本数字类型定义。相反,因为
K
是一个
Compa>rable
,您可以调用其
比较方法:

public int compareTo(Entry<K, V> other) {
    return key.compareTo(other.key);
}
public int compareTo(其他条目){
返回key.compareTo(其他.key);
}

我想你的意思是“K是一个引用类型”,而不是“K是一个变量”。@AndersonVieira是的。很抱歉可能会混淆。非常感谢!这是一个非常有用且简洁的解释。