我試圖擴(kuò)展具有泛型類型參數(shù)的泛型類與另一個(gè)具有泛型參數(shù)的泛型類,該泛型繼超級(jí)泛型的類型化參數(shù)之后。具有上界類型參數(shù)的超級(jí)泛型public abstract class Cage<T extends Animal> { protected Set<T> cage = new HashSet<T>(); public abstract void add(T animal); public void showAnimals() { System.out.println(cage); }}我要使用特定的有界類型創(chuàng)建的泛型類,例如Lion我嘗試了以下代碼,但出現(xiàn)錯(cuò)誤類型參數(shù)Lion在令牌“ extends”上隱藏了Lion和Syntax類型的錯(cuò)誤,預(yù)期對(duì)于LionCage類中的add()方法,我得到了錯(cuò)誤:LionCage類型的方法add(Lion)必須重寫或?qū)崿F(xiàn)超類型方法LionCage 類的意思是 Cage<Lion extends Animal>public class LionCage<Lion extends Animal> extends Cage<T extends Animal> { @Override public void add(Lion l) { cage.add(l); }}我的動(dòng)物類及其子類Lion,Rat等在Animal.java中定義public class Animal { public String toString() { return getClass().getSimpleName(); } }class Rat extends Animal {}class Lion extends Animal {}由于我遇到了錯(cuò)誤,因此我猜測(cè)我所遵循的方法可能不正確。在那種情況下,是否有任何標(biāo)準(zhǔn)的方法可以在Java泛型中實(shí)現(xiàn)此方案?
1 回答

ITMISS
TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
您的LionCage類不必是通用的,但必須Lion在extends子句中傳遞一個(gè)具體的類型paramter():
public class LionCage extends Cage<Lion> {
@Override
public void add(Lion l) {
cage.add(l);
}
}
添加回答
舉報(bào)
0/150
提交
取消