Java 在添加到ArrayList时构造对象
我认为,我的问题是编译器不知道如何专门添加ComputerPart。它可以添加一个对象,但是如果我把它作为一个普通对象,那么当我调用parts.get(x).toString()时,我将不会得到字符串类型的item和price私有变量 我会继续努力的,希望我能在3小时内找到答案,当它到期的时候,洛洛尔! 谢谢Java 在添加到ArrayList时构造对象,java,object,constructor,arraylist,tostring,Java,Object,Constructor,Arraylist,Tostring,我认为,我的问题是编译器不知道如何专门添加ComputerPart。它可以添加一个对象,但是如果我把它作为一个普通对象,那么当我调用parts.get(x).toString()时,我将不会得到字符串类型的item和price私有变量 我会继续努力的,希望我能在3小时内找到答案,当它到期的时候,洛洛尔! 谢谢 private ArrayList parts=new ArrayList(); 您的原始行应该会收到编译器警告。此代码看起来不错。您如何尝试调用不适合您的ComputerKit构造函数
private ArrayList parts=new ArrayList();
您的原始行应该会收到编译器警告。此代码看起来不错。您如何尝试调用不适合您的
ComputerKit
构造函数?您应该更改的一件事是如何将零件添加到列表中:
private ArrayList <ComputerPart> parts = new ArrayList<>();
如果您觉得自己非常聪明,请将声明的类型从ArrayList
更改为List
:
public ComputerKit(ComputerPart ... cp){
for(ComputerPart part : cp){
parts.add(cp);
}
}
private List parts=new ArrayList();
这一行应该给出编译器错误,因为您的ArrayList接受的是ComputerPart对象,而您在代码中添加的是数组
private List<ComputerPart> parts = new ArrayList<>();
换成
parts.add(x, cp);
cp
包含所有计算机部件,因此您要多次将它们添加到列表中。此外,您可以覆盖ComputerPart
中的toString()
方法,以便提供您想要的任何输出。天哪,这立刻解决了问题。你是我的救世主,我会跟随你到地狱的深处。谢谢你,伙计!不过,我没有遇到编译器错误。toString()只输出对象。toString()(默认对象)是的,我想这是我遗漏的相关代码部分,呵呵。我确实覆盖了计算机部分的toString()。谢谢
private List<ComputerPart> parts = new ArrayList<>();
parts.add(x, cp);
parts.add(x, cp[x]);
private ArrayList<ComputerPart> parts;
//Constructor
public ComputerKit(ComputerPart... cp){
parts = new ArrayList<ComputerPart>(Arrays.asList(cp));
}
public String toString(){
return item + " " + price;
}