好的,所以我试图将 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。
眼眸繁星
TA贡献1873条经验 获得超9个赞
在您的类 Packet 中,您必须以这种方式声明项目:
private ArrayList <Item> items;
目前您正在创建对象项目,现在您将创建项目对象列表。
喵喵时光机
TA贡献1846条经验 获得超7个赞
您的问题在这里private ArrayList items;
您应该<>
与 arrayList 一起使用。
private ArrayList<Item> items;
没有<>
原始类型什么是原始类型,我们为什么不使用它?
在运行时,您items
将等于ArrayList<Object>
. 这就是为什么你得到Object cannot be converted to Item
添加回答
举报
0/150
提交
取消