我在包含arraylist的子类上有一个构造函数,并且对该构造函数的调用使用Java给了我一个错误

时间:2019-02-05 00:26:28

标签: java arraylist

所以我有一个PersonData类,其中包含:名字,姓氏,地址和电话号码。

我应该创建一个名为CustomerData的子类,该子类添加一个客户编号,一个关于客户是否希望出现在邮件列表和交易列表中的布尔值。事务列表应该是长整数的arrayList。

以下是一些说明: 编写一个非参数构造函数,该函数将所有变量(包括继承的变量)设置为空字符串,并将事务设置为空ArrayList(但不为null!) 编写一个构造函数,该构造函数将有关客户的所有数据作为参数(名称,地址等,总共7个参数),并初始化成员变量。在使用交易字段时,请不要忘记创建作为参数提供给您的对象的深层副本。

这是我用于PersonData的代码:

public class CustomerData extends PersonData implements Cloneable {

static int nextCustomerNumber = 0;
private int customerNumber;
boolean mailingList;
ArrayList<Long> transactions;

/**
 * No-arg constructor
 */
public CustomerData() {
    super();
    customerNumber = nextCustomerNumber++;
    mailingList = true;
    transactions = new ArrayList<Long>();
}

/**
 * Constructor that takes in all the values used
 *
 * @param lname last name that is inherited from PersonData
 * @param fname first name that is inherited from PersonData
 * @param addy address that is inherited from PersonData
 * @param number phone number that is inherited from PersonData
 * @param mList the mailing list boolean
 * @param t the array list for transactions
 */
public CustomerData(String lname, String fname, String addy, String number, boolean mList, ArrayList<Long> t) {

    super(lname, fname, addy, number);
    customerNumber = nextCustomerNumber++;
    mailingList = mList;
    transactions = new ArrayList<>();
    for (int i = 0; i < t.size(); i++) {
        transactions.add(t.get(i));
    }
}

在我的主文件CustomerDemo中,我试图用参数调用构造函数,但出现以下错误(在Netbeans中),表达式的非法开头,类型的非法开头和“;”预期的。

代码如下:

public class CustomersDemo {

public static void main(String[] args) {
    CustomerData customer = new CustomerData();
    CustomerData customer2 = new CustomerData("Wayne", "Bruce", "Gotham City", "548-547-5846", true, {1,2,3});
}

我想这与我试图将数据放入arrayList的方式有关。我看过几个站点,在我的教科书中,我所看到的都是使用.add和.set将它们放入arraylist中的。

不确定该怎么做,任何建议都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

首先,您不应从输入中要求任何形式的实现。最好改用接口或抽象类。

public CustomerData(String lname, String fname, String addy, String number, boolean mList, List<Long> t) {
    ....
}

现在,您可以使用方便的Arrays.asList方法。

CustomerData customer2 = new CustomerData("Wayne", "Bruce", "Gotham City", "548-547-5846", true, Arrays.asList(1,2,3));

另请参阅:

  1. Converting between an Array and a List in Java