如果我有超类,请说动物,
和两个子类: Zebra 和 Giraffe ,
如果我决定定义动物矢量:
Vector <Animal> animals = new Vector();
我想说:你可以添加 Giraffes ,但你必须先拥有至少一个 Zebra 。
不使用RTTI,最好的方法是什么? (的instanceof )
答案 0 :(得分:5)
定义自己的类:
class Animals extends Vector<Animal>
{
public Animals(Zebra z) { add(z); }
}
还有两点:
就个人而言,我会选择一种根本不使用继承的设计。因此,我的类将委托给它们而不是子类化vector(或ArrayList):
class Animals extends
{
private final Vector<Animal> inner = new Vector<Animal>();
public Animals(Zebra z) { add(z); }
// Delegate to whatever methods of Vector that Animals need to support, e.g.,
void add(Animal a) { inner.add(a); }
...
}