好的,所以我试图将 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
	提交
		取消
	