我有一个名为 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/