Добавление объекта в ArrayList, который принимает другой объект в качестве параметра - PullRequest
0 голосов
/ 09 октября 2018

Привет всем, я пытаюсь освежить свои знания Java, так как я давно не кодировал Java.Я работаю над этим проектом магазина, который имеет три класса.1. Product 2.InventoryItem & 3.Store

Класс продукта требует строку для имени и двойную для стоимости.Существуют методы доступа и мутатора для установки и извлечения данных.

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 в качестве параметра в конструкторе, чтобы позже было проще добавить всю информацию в 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);
}
...

Я также хотел бы знать, как мне поступить с использованием методов Products, когда я выясню, как передать Объект какаргумент.

При попытке предварительно заполнить мой ArrayList InventotyItems, я начал получать ошибку.Это делается в моем классе 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 голосов
/ 09 октября 2018

Конструктор Alter Inventory Item для передачи таких данных.

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

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

    this.quantity = quantity;
}
public InventoryItem(String productName, double cost, int quantity) {
    this.productObject = new Product(productName,cost);
    this.quantity = quantity;
}

/**
 * Method to set new name for product in inventory
 *
 * @param newProductName
 */
public void setProductName(String newProductName) {
    productObject.setProductName(newProductName);
}
0 голосов
/ 09 октября 2018

Изменить конструктор InventoryItem.конструктор должен получить параметры типа (Product product), а не с новым ключевым словом

public InventoryItem(Product product, int quantity) {

    this.quantity = quantity;
}
0 голосов
/ 09 октября 2018

Ваш синтаксис неправильный.Запятая отсутствует при создании экземпляра InventoryItem.

Заменить

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

на

new InventoryItem(new Product("Bananas", 1.50), 20)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...