java - 扩展时方法返回值发生变化

标签 java oop

我有一个类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/

相关文章:

java - 如何摆脱 instanceof?

c++ - 删除数组成员的更好方法是什么?

php - 关于使用类的类的开始 OOP 问题

cocoa - 应该由 View 还是 Controller 负责拖动处理?

java - 在 Java (linux) 中获取一段时间内的平均系统 CPU 使用率

java - 如何在大于屏幕尺寸的 Canvas 上绘图?

java - 调用泛型构造函数?

java - android eclipse错误二进制xml文件错误膨胀类android.widget.relativelayout

java - hql查询形成

java - 如何在仅使用注释实现相同接口(interface)的不同类中使用@autowired