将对象添加到将另一个对象作为参数的ArrayList中

时间:2018-10-09 13:21:22

标签: java object arraylist parameters constructor

嘿,我想重提一下我的Java知识,因为我有一段时间没有用Java编写代码了。我正在这个有三个班级的商店项目中工作。 1.产品2.InventoryItem和3.Store

Product类的名称需要一个String,而成本则需要一个double。有用于设置和检索数据的访问器和更改器方法。

public class Product {
//fields
private String productName;
private double cost;

/**
 * Contructor
 *
 * @param productName
 * @param cost
 */
public Product(String productName, double cost){
   this.productName = productName;
   this.cost = cost;
}
...

InventoryItem类在数量上与产品信息一起添加。这对于使用Store类的原因将很清楚。 我想在构造函数中传递一个新的Product Object作为参数,以便稍后将所有信息添加到ArrayList中。如上所述,我已经创建了用于获取名称,成本和数量的set和get方法。

public class InventoryItem {
//fields
private Product productObject;
private int quantity;

/**
 * Constructor
 *
 * @param quantity
 */
public InventoryItem(new Product, int quantity) {

    this.quantity = quantity;
}

/**
 * Method to set new name for product in inventory
 *
 * @param newProductName
 */
public void setProductName(String newProductName) {
    productObject.setProductName(newProductName);
}
...

我还想知道一旦弄清楚如何将Object作为参数传递,我将如何使用Products方法。

当尝试使用InventotyItems预先填充ArrayList时,我开始出现错误。这是在我的Store类中完成的。

import java.util.ArrayList;

public class Store {
//fields
private String storeName;
private String location;
private ArrayList<InventoryItem> itemList;

/**
 * Constructor
 */
public Store(String storeName, String location){
    this.storeName = storeName;
    this.location = location;
    itemList = new ArrayList<>();
}

/**
 * Method to prepopulate a list of items the store will be selling
 */
private void setItemList(){
   itemList.add(new InventoryItem(new Product("Bananas", 1.50)20));
   itemList.add(new InventoryItem(new Product("Canned Beans", 2.00)15));
   itemList.add(new InventoryItem(new Product("Easy-Mac", 2.50)15));
   itemList.add(new InventoryItem(new Product("Oranges", .50)25));
   itemList.add(new InventoryItem(new Product("Cereal", 3.00)10):);
   itemList.add(new InventoryItem(new Product("Milk", 4.00)10));

}

}

然后在InventoryItem中更改我的参数

itemList.add(newInventoryItem("Bananas", 1.50, 20));

我想找出如何通过Store类的代码块传递新产品,如上所示。

3 个答案:

答案 0 :(得分:1)

您的语法错误。实例化InventoryItem时缺少逗号。

替换

new InventoryItem(new Product("Bananas", 1.50)20)

使用

new InventoryItem(new Product("Bananas", 1.50), 20)

答案 1 :(得分:1)

更改InventoryItem构造函数。构造函数应该使用(Product product)之类的参数,而不要使用新关键字

public InventoryItem(Product product, int quantity) {

    this.quantity = quantity;
}

答案 2 :(得分:0)

更改库存项目构造函数以传递这样的数据。

UPLOADCARE_LOCALE_TRANSLATIONS = {
  // messages for widget
  errors: {
    'dimensions': 'The image has to be 800x600px or larger.'
  },
  // messages for dialog’s error page
  dialog: { tabs: { preview: { error: {
    'dimensions': {
      title: 'Error.',
      text: 'The image is too small. Try to upload another one.',
      back: 'Back'
    }
  } } } }
};