【发布时间】:2013-05-10 08:50:37
【问题描述】:
所以我有 3 个课程:
Item-
GroupItem扩展Item -
ProductItem扩展项目
我正在将一组 Item 对象传递给一个类,并希望根据它们的类类型做不同的事情。
使用instanceof 是一种可接受的方法,或者我应该有一个内部boolean isGroup() 方法,该方法将在指定子类的初始化时设置。
class Item {
protected boolean isGroup = false;
public boolean isGroupItem() { return isGroup; }
}
class GroupItem extends Item {
public GroupItem() {
isGroup = true;
}
}
class ProductItem extends Item {
public ProductItem() {
isGroup = false;
}
}
class Promotion {
// Item can be either a group or a list of items
private List<Item> items = new LinkedList<Item>;
public void addItem(Item itemObj) {
items.addItem(itemObj);
}
public List<Item> getItems() {
return items;
}
}
class Checker {
// Items retrieved from Promotion and passed from another class as array
public Checker(Item[] items) {
// either
if(items[0] instanceof GroupItem) {
// Do something ...
}
// or
if(items[0].isGroupItem()) {
// Do something ...
}
}
}
所以我的问题是:
- 实例还是方法?
- 如果方法,在项目或促销中?
- 而且,为什么? (只是这样我可以更好地理解推理)
提前致谢
【问题讨论】:
-
使用的实例更加通用和可读。
-
感谢您的回复和回答。为那些回答的人提供更多信息:正在做的事情是,如果它是一个组,则需要将其添加到数据库表中的不同字段
标签: java polymorphism subclass instanceof