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

如何将多个类添加到通用 ArrayList?

如何将多个类添加到通用 ArrayList?

偶然的你 2022-12-15 17:05:16
我正在做一个作业,我只能将特定类添加到通用 ArrayList,但 ArrayList 似乎没有按预期添加类。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.");   }主要参数测试:public static void main(String[] args) {    ComputerPart c;    c = new ComputerPart(12);    ComputerOrder<Product> g3 = new ComputerOrder<>();    g3.addProduct(c);    g3.print();}预期的结果是 ArrayList g3 能够添加 c,因为它是 ComputerPart 对象的一个实例,但 ArrayList 是空的。有人可以解释我的代码做错了什么吗?注意:“else”语句仅用于测试目的,并且似乎表明 if 语句无法正常工作,因为它在我测试时不断被触发。
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

您的主要问题是您弄乱了 isinstance 检查。该方法是相反的;你要找的是:

ComputerPart.class.isInstance(t),不是t.getClass().isInstance(ComputerPart.class)。但是,您可以将其写得更简单t instanceof ComputerPart

其次,您搞砸了系统输出。据推测,您的意思是代码中的每个“if”都改为“else if”,当然第一个除外。


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 58 浏览

添加回答

举报

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