我有一个维护类型为Baz的对象列表的类。但是,我想在这个列表中放置一些对象,它们是从类型Baz的子类实例化的(用于覆盖行为)。
到目前为止,这已经足够简单了——List中的多态性。然而,维护列表的类本身是抽象的,不同的实现将需要在列表中放置不同的类型。一些抽象函数getTypeToUse应该指定要插入到列表中的元素的类型。这在Java中可能吗?考虑以下伪代码:
public abstract class Foo {
public void Bar() {
List<Baz> qux = new ArrayList<>();
Type buzz = getTypeToUse();
Baz fizz = new buzz();
qux.add(fizz);
}
// The returned Type should be some subclass of Baz
// It would be nice to enforce this, like <? extends Baz>
public abstract Type getTypeToUse();
}
谢谢!
您可以返回一个类对象。类Class<T>
实现接口Type
。像这样定义你的方法:
public abstract Class<? extends Baz> getClassToUse();
然后像这样实现它(在类Baz中):
@Override
public Class<? extends Baz> getClassToUse() {
return Baz.class;
}