我有一个类ClassA
,其中有一些返回项目的方法:
class ClassA {
ClassA item(...) {...}
Vector<ClassA> list(...) {...}
}
这些方法处理输入并动态生成此类项目。现在想象我扩展这个类:
class ClassB extends ClassA {
...
}
在任何情况下我都不会重写 item() 或 list() 方法,但我希望它们返回一个 ClassB
项(或 vector ),而不对返回值进行强制转换(即我现在当前的解决方案)。有什么办法可以做到吗?提前致谢。
最佳答案
我将创建第三个类(ClassC)来保存您的 ClassA 或 ClassB 项目,它使用如下通用类型进行参数化:
class ClassC<T extends ClassA> {
T item(...) {...}
Vector<T> list(...) {...}
}
现在您可以使用 ClassA 或 ClassB 类型实例化 ClassC,而不必担心类转换。
关于java - 扩展时方法返回值发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10267522/