我的 java 項(xiàng)目中有以下類Wheels,Engine它們Brake都實(shí)現(xiàn)了CarPart創(chuàng)建的對(duì)象存儲(chǔ)在ArrayList<CarPart> parts變量中。我想檢查三件事:我的車有輪子嗎?我的車有發(fā)動(dòng)機(jī)嗎?我的車有剎車嗎?我可以編寫(xiě)該hasWheels函數(shù),然后再次編寫(xiě)相同的代碼,但將 Wheels 替換為Engine,然后替換為Brake。都是重復(fù)的代碼。有沒(méi)有一種方法可以將參數(shù)傳遞給類似的函數(shù)doesArrayContain(parts, Wheels)?public boolean hasWheels(ArrayList<CarPart> parts) { for (CarPart part : parts) { if (part instanceof Wheels) return false; } return true;}像這樣的東西public boolean doesArrayContain(ArrayList<CarPart> parts, Type type) { for (CarPart part : parts) { if (part instanceof type) return false; } return true;}
1 回答
慕尼黑的夜晚無(wú)繁華
TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用屬于類“Class”的instanceOf方法
另外,您的邏輯似乎有缺陷,當(dāng)列表確實(shí)包含時(shí),您將返回 false。(除非你命名錯(cuò)誤?)所以我交換了 return 語(yǔ)句。
public boolean doesArrayContain(ArrayList<CarPart> parts, Class<? extends CarPart> type) {
for (CarPart part : parts) {
if (type.isInstance(part.getClass()))
return true;
}
return false;
}
像使用它一樣doesArrayContain(myList, Wheels.class)
添加回答
舉報(bào)
0/150
提交
取消
