gpt4 book ai didi

java - 从另一个类添加到对象 ArrayList

转载 作者:行者123 更新时间:2023-12-02 10:19:53 25 4
gpt4 key购买 nike

我有一个名为 Item 的类。

public class Item {

private int code;
private String name;
private double price;
private int quantity;

public Item(int code, String name, double price, int quantity) {
setCode(code);
setName(name);
setPrice(price);
setQuantity(quantity);
}
//Item getters and setters

我有一个名为 Stock 的类,它创建一个项目数组列表。

public class Stock {
private ArrayList<Item> stock;

public Stock() {
stock = new ArrayList<Item>();
}

public ArrayList<Item> getStock() {
return stock;
}

我还有一个名为 ItemRegister 的类,它将一个项目添加到 Stock 中。

public class ItemRegister extends Stock {

public void registerItem(String name, double price) {
getStock().add(new Item(setItemCode(), name, price, 0));
}

private int setItemCode() {
return getStock().size() + 1;
}

我正在使用单元测试来查看是否已将商品添加到库存中。

public class ItemRegisterTest {

@Test
public void testIfHasRegisteredItemInStock() {
Stock s = new Stock();
assertTrue(s.getStock().size() == 0);
ItemRegister i = new ItemRegister();
i.registerItem("Oleo", 20.0);
assertTrue(s.getStock().size() == 1);
}

}

当我运行这些测试时,它返回一个错误。在第二个 assertTrue 上,如果我使用对象 i 进行测试,它将返回 true,但我想要的是添加到 Stock 而不是 ItemRegister 因为如果稍后我想咨询 Stock,我会调用 Stock 而不是 ItemRegister

最佳答案

从评论来看,您可以做的可能是更改父子关系并让 ItemRegister 保存 Stock 对象的实例。因此,您可以像这样修改 ItemRegister 类:

public class ItemRegister  {
Stock s;
public ItemRegister(Stock s) {
this.s = s;
}

public void registerItem(String name, double price) {
s.getStock().add(new Item(setItemCode(), name, price, 0));
}

private int setItemCode() {
return s.getStock().size() + 1;
}
}

然后,您最初编写的测试代码只需稍加修改ItemRegister i = new ItemRegister(s);即可成立,并且您可以处理 Stock 对象的一个​​实例。

关于java - 从另一个类添加到对象 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54412282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com