2 回答

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個贊
由于Integer
是最終類,因此正確的定義B
是:
public abstract class B<V> extends A<Integer,V> { }
您不需要K
類型參數(shù)。

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個贊
發(fā)生編譯器錯誤是因?yàn)殡m然Date實(shí)現(xiàn)Comparable<Date>了,但子類Date可能沒有實(shí)現(xiàn)Comparable<SubclassOfDate>,所以編譯器會報(bào)錯。
您可以通過將A的聲明更改為使用通配符來解決此問題:
public abstract class A<K extends Comparable<? super K>, V> extends TreeMap<K, V>
但是,您可能打算這樣聲明B:
public abstract class B<V> extends A<Integer,V> {
}
Integer是final,沒有其他類可以繼承它。所以B不必在K.
至于以Dateas 為鍵的類,您可能也想這樣做:
public abstract class C<V> extends A<Date,V> {
}
但由于Date不是final,您可以創(chuàng)建一個通用參數(shù)K extends Date:
public abstract class C<K extends Date, V> extends A<K,V> {
}
添加回答
舉報(bào)