public class  Entry<K, V>  implements Comparable<Entry<K, V> >  {
    private K key;
    public K getKey() {
return key;
} public void setKey(K key) {
this.key = key;
} private V value;
    
    public Entry(K key, V value){
     this.key = key;
     this.value = value;
    }
   
public V getValue() {
return value;
} public void setValue(V value) {
this.value = value;
}
 
public static void main(){

} @Override
public int compareTo(Entry<K, V> o) {
// TODO Auto-generated method stub
                  return this.getKey().compareTo o.getKey()) //但是在这里会报错
         }
}
如上代码所示, 我希望K也是从Comparable接口继承而来的类, 从而我可以在Entry类的compareTo方法里利用K的compareTo方法, 怎么声明比较合适那? 请教高手指点。

解决方案 »

  1.   

    public class  Entry<K extends Comparable, V>  implements Comparable<Entry<K extends Comparable, V> >
    这么写就ok了这就是泛型的擦除边界问题。<T>这种情况,在类内部会被擦除到Object,也就是说只能把它当做是Object来使用;可以用extends来指定边界,<K extends Comparable>,在类内部K被当做是Comparable。满足楼主的要求了
      

  2.   

    public class  Entry<K extends Comparable<? super K>, V>  implements Comparable<Entry<K, V> >  {
        private K key;
        public K getKey() {
    return key;
    } public void setKey(K key) {
    this.key = key;
    } private V value;
        
        public Entry(K key, V value){
         this.key = key;
         this.value = value;
        }
       
    public V getValue() {
    return value;
    } public void setValue(V value) {
    this.value = value;
    }
     
    public static void main(){

    } @Override
    public int compareTo(Entry<K, V> o) {
    // TODO Auto-generated method stub
    return this.key.compareTo(o.getKey());
    }
    }
    谢谢二楼了, 感觉这40分来的好容易哦