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

JAVA,试图用arraylist总结对象中“重量”的整数值

JAVA,试图用arraylist总结对象中“重量”的整数值

繁星coding 2022-06-23 20:33:28
好的,所以我试图将 arraylist 中对象的权重相加,我遇到了这段代码的问题。该程序给我错误调用“不兼容的类型:对象无法转换为项目”我试图找到解决方案但找不到任何有用的东西。也是的,该项目正在从 .getWeight 返回一个 intint totalWeight = 0;if (!(items.isEmpty())){    for (Item i: items){        totalWeight += i.getWeight();    }    return totalWeight;}return 0;让我提供整个代码以供进一步调查。导入 java.util.ArrayList;public class Packet {    private ArrayList items;    public Packet(){        ArrayList<Item> items = new ArrayList<>();    }    public void addItem(Item item){        items.add(item);    }    public int totalWeight(){        int totalW = 0;        if (!(items.isEmpty())){            for (Item i: items){                totalW += i.getPaino();            }            return totalW;        }        return 0;    }}编辑:: 项目类public class Item {    private String name;    private int weight;    public Item(String name, int weight){        this.weight = weight;        this.name = name;    }    public String getName(){        return this.name;    }    public int getWeight(){        return this.weight;    }    @Override    public String toString(){        return this.name + " (" + this.weight + " kg)";    }}
查看完整描述

3 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

此外,在声明新集合时使用接口类型是一种很好的做法。例如,您的项目列表应该这样声明:

private List<Item> items = new ArrayList<>();

原因很简单——通过使用接口类型声明集合,代码会更加灵活,因为您可以在需要时轻松更改具体实现。

我的意思是,例如,您可以轻松地将ArrayList更改为LinkedList


查看完整回答
反对 回复 2022-06-23
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

在您的类 Packet 中,您必须以这种方式声明项目:

private ArrayList <Item> items;

目前您正在创建对象项目,现在您将创建项目对象列表。


查看完整回答
反对 回复 2022-06-23
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

您的问题在这里private ArrayList items;您应该<>与 arrayList 一起使用。

private ArrayList<Item> items;

没有<>原始类型什么是原始类型,我们为什么不使用它?

在运行时,您items将等于ArrayList<Object>. 这就是为什么你得到Object cannot be converted to Item


查看完整回答
反对 回复 2022-06-23
  • 3 回答
  • 0 关注
  • 122 浏览

添加回答

举报

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