尽管扩展并实现了Comparable,但是Generic Type上的大于运算符未定义

时间:2015-04-25 13:50:21

标签: 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) {
        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方法的第一行。

2 个答案:

答案 0 :(得分:6)

Java不支持运算符重载 - <><=>=仅为原始数字类型定义。相反,由于KComparable,您可以调用其compareTo方法:

public int compareTo(Entry<K, V> other) {
    return key.compareTo(other.key);
}

答案 1 :(得分:3)

Java与C / C ++不同,您可以在其中覆盖/重载运算符。你必须使用方法表格。

编辑:如果类型是基本类型,如int或float,则可以使用&lt;和&gt;运营商。但由于K是一个引用,就像整数类CLASS一样,你不能。