我有一个类ClassA
,其中包含一些返回项目的方法:
class ClassA {
ClassA item(...) {...}
Vector<ClassA> list(...) {...}
}
这些方法处理输入并动态生成这些项目。现在想象我扩展这个类:
class ClassB extends ClassA {
...
}
在任何情况下我都不会覆盖item()或list()方法,但是我希望它们返回一个ClassB
项(或向量),而不会在返回时进行转换(这是我当前的解决方案)现在)。有没有办法这样做?提前谢谢。
答案 0 :(得分:3)
我会创建一个第三类(ClassC)来保存你的ClassA或ClassB项,这些项使用如下泛型类型进行参数化:
class ClassC<T extends ClassA> {
T item(...) {...}
Vector<T> list(...) {...}
}
现在,您可以使用ClassA或ClassB类型实例化ClassC,而不必担心类转换。