亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從另一個類添加到對象 ArrayList

從另一個類添加到對象 ArrayList

哈士奇WWW 2022-05-25 17:36:00
我有一個名為 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 的類,它創建一個 ArrayList 的項目。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;}我正在使用單元測試來查看我是否確實向 Stock 中添加了一個項目。public class ItemRegisterTest {@Testpublic 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。
查看完整描述

2 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

從評論中,您可以做的可能是更改父子關系并讓 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 對象的一個實例上工作。


查看完整回答
反對 回復 2022-05-25
?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

我想要的是添加Stock而不是ItemRegister因為如果以后我想咨詢Stock我會打電話給 Stock 而不是ItemRegister。


然后你需要Stock換成ItemRegister.


public class ItemRegister  {

    Stock stock;

    public ItemRegister(Stock stock) {

        this.stock = stock;

    }


    public void registerItem(String name, double price) {

        stock.getStock().add(new Item(setItemCode(), name, price, 0));

    }


    private int setItemCode() {

        return stock.getStock().size() + 1;

    }

}

在您的單元測試中使用它,如下所示:


public class ItemRegisterTest {

    @Test

    public void testIfHasRegisteredItemInStock() {

        Stock s = new Stock();

        assertTrue(s.getStock().size() == 0);

        ItemRegister i = new ItemRegister(s);        

        i.registerItem("Oleo", 20.0);

        assertTrue(s.getStock().size() == 1);

    }

}


查看完整回答
反對 回復 2022-05-25
  • 2 回答
  • 0 關注
  • 98 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號