我正在做一個(gè)作業(yè),我只能將特定類添加到通用 ArrayList,但 ArrayList 似乎沒有按預(yù)期添加類。public class ComputerOrder<T extends Product> extends GenericOrder<T> {private List<T> products;//the list of items public void addProduct(T t) { if (t.getClass().isInstance(ComputerPart.class)) { products.add(t); } if (t.getClass().isInstance(Service.class)) { products.add(t); } if (t.getClass().isInstance(Peripheral.class)) { products.add(t); } else System.out.println("Not the right type of object."); }主要參數(shù)測(cè)試:public static void main(String[] args) { ComputerPart c; c = new ComputerPart(12); ComputerOrder<Product> g3 = new ComputerOrder<>(); g3.addProduct(c); g3.print();}預(yù)期的結(jié)果是 ArrayList g3 能夠添加 c,因?yàn)樗?ComputerPart 對(duì)象的一個(gè)實(shí)例,但 ArrayList 是空的。有人可以解釋我的代碼做錯(cuò)了什么嗎?注意:“else”語句僅用于測(cè)試目的,并且似乎表明 if 語句無法正常工作,因?yàn)樗谖覝y(cè)試時(shí)不斷被觸發(fā)。
1 回答

慕婉清6462132
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
您的主要問題是您弄亂了 isinstance 檢查。該方法是相反的;你要找的是:
ComputerPart.class.isInstance(t)
,不是t.getClass().isInstance(ComputerPart.class)
。但是,您可以將其寫得更簡(jiǎn)單t instanceof ComputerPart
:
其次,您搞砸了系統(tǒng)輸出。據(jù)推測(cè),您的意思是代碼中的每個(gè)“if”都改為“else if”,當(dāng)然第一個(gè)除外。
添加回答
舉報(bào)
0/150
提交
取消