【问题标题】:Adding to an array in another class?添加到另一个类中的数组?
【发布时间】:2020-03-24 13:34:59
【问题描述】:

我目前有一个 Customer 类,其中包含一个 ArrayList。

这个:

package sample;

import java.util.ArrayList;

public class Customer {
    private String customernumber;
    private ArrayList customerorder;

    public Customer(String customernumber, ArrayList customerorder) {
        this.customernumber = customernumber;
        this.customerorder = customerorder;
    }

    public String getCustomernumber() {
        return customernumber;
    }

    public void setCustomernumber(String customernumber) {
        this.customernumber = customernumber;
    }

    public ArrayList getCustomerorder() {
        return customerorder;
    }

    public void setCustomerorder(ArrayList customerorder) {
        this.customerorder = customerorder;
    }
}

在另一个类中,我想将所有项目添加到一个数组中,并将其添加到 Customer 类中的数组中。

我在顶部创建了它的一个实例

private Customer cus = new Customer();

以及另一个类中的订单数组。

private ObservableList<FoodDrink> order = FXCollections.observableArrayList();

也是一个应该添加所有项目的按钮事件。

public void btnSubmitOrder(ActionEvent actionEvent) {

}

我知道我应该循环它,但我不确定如何正确访问数组并将此类数组中的所有项目添加到 Customer 数组。

【问题讨论】:

  • 您发布的代码,特别是private Customer cus = new Customer();,无法编译。但是假设你的意思是你想将order 中的所有内容都添加到Customer 的列表中,那你为什么不能只做cus.getCustomerOrder().addAll(order)
  • 我试过 public void btnSubmitOrder(ActionEvent actionEvent) { cus.getCustomerOrder().addAll(order) }
  • 那有什么问题?
  • 哦,等等似乎工作欢呼

标签: java javafx


【解决方案1】:

如果您在列表中使用复数名称,您的代码会更好地阅读。此外,您应该使用 camelCase 命名变量和方法。

private ArrayList customerOrders ;

您的问题的答案在于您编写的getter 方法getCustomerOrders。该方法返回一个ArrayList。顺便说一句,如果不需要特定于 ArrayList 的方法,它应该返回更通用的 List

public List< CustomerOrder > getCustomerOrders() {
    return customerOrders;
}

注意我们如何使用尖括号来表示输出列表将包含CustomerOrder 类型的对象。对您的成员变量 private List&lt; CustomerOrder &gt; customerOrders ; 执行相同操作。

调用该 getter 方法以获取对列表对象的引用。例如,让我们查找代表我们的客户 Alice 的 Customer 对象。

Customer aliceCustomer = … ;
List< CustomerOrder > aliceOrders = aliceCustomer.getCustomerOrders() ;

使用该引用向该集合添加新订单。

aliceOrders.add( new CustomerOrder( … ) ) ;

【讨论】:

  • 另外,不要使用原始类型,不要使用ArrayList作为编译时类型等
猜你喜欢
  • 2020-07-26
  • 2016-03-18
  • 1970-01-01
  • 2013-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多