为了账号安全,请及时绑定邮箱和手机立即绑定

如何替换“instanceof”函数中的变量

如何替换“instanceof”函数中的变量

富国沪深 2024-01-28 17:00:27
我的 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)


查看完整回答
反对 回复 2024-01-28
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信