K 和 V 保證是字符串或整數(shù)。我已經(jīng)多次使用泛型,但從未使用過<K extends Comparable<K>, V>,所以我現(xiàn)在很掙扎。
1 回答

呼喚遠(yuǎn)方
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個贊
當(dāng)你實(shí)現(xiàn)一個泛型接口時,你應(yīng)該總是指定類型參數(shù)。您可以不指定它們而逃脫,但是您正在使用原始類型,而您不應(yīng)該使用原始類型。
當(dāng)你做指定它們,你還需要一個有效的方式來指定。
第一個選項(xiàng)是錯誤的,原因有兩個:
當(dāng)你指定類型參數(shù)時,你永遠(yuǎn)不會重寫那個參數(shù)的邊界,所以寫K extends Comparable<K>是錯誤的
K并且V沒有在任何地方定義。
第二個選項(xiàng)是錯誤的,因?yàn)槟貙懥薑. 在第一選擇此選項(xiàng)的不同K和V 在這里定義-K并且V是的類型參數(shù)Son。
第三個選項(xiàng)編譯,但它使用原始類型,這首先違背了使用泛型的目的。
理想情況下,您會編寫如下內(nèi)容:
class Son<K extends Comparable<K>, V> implements Father<K, V> {
}
注意:我怎么沒改寫界限,定義K和V作為類型參數(shù)Son。
或者,指定一個具體類型:
class Son implements Father<String, Integer> {
}
添加回答
舉報
0/150
提交
取消