Java 在添加到ArrayList时构造对象

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构造函数

我认为,我的问题是编译器不知道如何专门添加ComputerPart。它可以添加一个对象,但是如果我把它作为一个普通对象,那么当我调用parts.get(x).toString()时,我将不会得到字符串类型的item和price私有变量

我会继续努力的,希望我能在3小时内找到答案,当它到期的时候,洛洛尔! 谢谢

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;
}