【发布时间】:2015-03-12 13:31:45
【问题描述】:
我有一个基类 Product,它有五个子类(ComputerPart、Peripheral、Service、Cheese、Fruit)。每一个都有 2/3 的子类。
然后我有一个GenericOrder 类,它充当 Product 类中任意数量的对象的集合。 GenericOrder 有一个名为 ComputerOrder 的子类仅允许将 ComputerPart、Peripheral 和 Service 添加到订单中。我花了很长时间试图弄清楚这一点,但无法得到合理的答案。请帮忙。这是我为GenericOrder 提供的:
public class GenericOrder<T>{
private static long counter=1;
private final long orderID = counter++;
private List<T> orderItems;
public GenericOrder(){
orderItems = new ArrayList<T>();
}
// and so on with another constructor and add, get and set methods.
}
class ComputerOrder<T> extends GenericOrder{
//need help here
}
任何任何将不胜感激.....
干杯
【问题讨论】:
-
使用自定义接口作为要添加到泛型的类型/类的标记,并在泛型声明中使用接口名称(确保选择的类与层次结构相关)
-
你需要让这三个类继承一个接口,然后
class GenericOrder<T extends MyInterface>。如果您有机会将T设为原语,那么您需要定义没有惰性的显式类,即class IntOrder、class FloatOrder等等。