我的 java 项目中有以下类Wheels,Engine它们Brake都实现了CarPart创建的对象存储在ArrayList<CarPart> parts变量中。我想检查三件事:我的车有轮子吗?我的车有发动机吗?我的车有刹车吗?我可以编写该hasWheels函数,然后再次编写相同的代码,但将 Wheels 替换为Engine,然后替换为Brake。都是重复的代码。有没有一种方法可以将参数传递给类似的函数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条经验 获得超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
提交
取消