我的 java 項目中有以下類Wheels,Engine它們Brake都實現(xiàn)了CarPart創(chuàng)建的對象存儲在ArrayList<CarPart> parts變量中。我想檢查三件事:我的車有輪子嗎?我的車有發(fā)動機嗎?我的車有剎車嗎?我可以編寫該hasWheels函數(shù),然后再次編寫相同的代碼,但將 Wheels 替換為Engine,然后替換為Brake。都是重復的代碼。有沒有一種方法可以將參數(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 回答

慕尼黑的夜晚無繁華
TA貢獻1864條經(jīng)驗 獲得超6個贊
您可以使用屬于類“Class”的instanceOf方法
另外,您的邏輯似乎有缺陷,當列表確實包含時,您將返回 false。(除非你命名錯誤?)所以我交換了 return 語句。
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)
添加回答
舉報
0/150
提交
取消