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方法, 怎么声明比较合适那? 请教高手指点。
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方法, 怎么声明比较合适那? 请教高手指点。
这么写就ok了这就是泛型的擦除边界问题。<T>这种情况,在类内部会被擦除到Object,也就是说只能把它当做是Object来使用;可以用extends来指定边界,<K extends Comparable>,在类内部K被当做是Comparable。满足楼主的要求了
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分来的好容易哦