从Java中的另一个类获取数据

时间:2011-11-01 13:13:32

标签: java class getter

public class Item {

    /**
    * Instance variables for this class
    */

    private String itemName;
    private int itemQuantity;

    /**
    * Contructor for this class
    */

    public Item (String itemName, int itemQuantity) {
        this.itemName = itemName;
        this.itemQuantity = itemQuantity;
    }
    //setter and getter methods
    public String getItemName () { 
        return itemName;
    }
    public void setItemName(String itemName) {
        this.itemName = itemName;
    }

    public int getItemQuantity () {
        return itemQuantity;
    }
    public void setItemQuantity(int itemQuantity) {
        this.itemQuantity = itemQuantity;
    }
}

好的..我已经有了课程的课程。现在我必须编写CartItem类。给出的描述如下:

class CartItem{ 
/*
Objects of this class are used to hold items that the shopper purchases in the super market. 
There are two attributes in this class, an item (an object created from the Item class) and a quantity (the number of that item that the shopper purchases). You have to write these two attributes. Note that one of the two will have a user defined data type. 
*/

}

public class CartItem {
    private Item item; //item from the item class
    private int itemQuantity; //quantity how much shopper buys

    public CartItem(Item itemName, int itemQuantity) {
        this.getItem();
        this.getQuantity();
    }


    public Item getItem() {
        return item;
    }
    public void setItem(Item item) {
        this.item = item;
    }

    public int getQuantity() {
        return itemQuantity;
    }
    public void setQuantity(int quantity) {
        this.itemQuantity = itemQuantity;
    }
}

只是想知道它是否正确。

3 个答案:

答案 0 :(得分:2)

不,这不对。看看你的构造函数:

public CartItem(Item itemName, int itemQuantity) {
    this.getItem();
    this.getQuantity();
}

这里你正在调用 getters 并完全忽略调用者传入的值。我认为你不想这样做...想想构造函数需要做什么为了填充新构造的对象......

(你也应该考虑使这些类不可变,但这是一个稍微不同的事情。)

答案 1 :(得分:0)

很少。

1个人可以购买多个Item,因此List的{​​{1}}个  2构造函数不正确,应为

Item

答案 2 :(得分:0)

不,不是。

CartItem的构造函数只调用this.getItem()this.getQuantity()。这将只调用方法,这显然会返回null,因为属性永远不会被初始化。它应该是:

public CartItem(Item itemName, int itemQuantity) {
    this.item = itemName;
    this.itemQuantity = itemQUantity;
}

另一个问题是你为所有字段添加了getter和setter,甚至不知道这些方法是否必要。尽量支持不变性,只有在绝对必要时才提供setter。我不会解释不变性的所有优点,因为根据你已经知道的事情来说,这太早了。但一个好的经验法则是:如果没有使用它,请不要在类中添加方法。