好的,所以我試圖將 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
提交
取消