0

我有一个ClassA带有一些返回项目的方法的类:

class ClassA {
    ClassA item(...) {...}
    Vector<ClassA> list(...) {...}
}

这些方法处理输入并动态生成这些项目。现在想象我扩展了这个类:

class ClassB extends ClassA {
    ...
}

在任何情况下我都不会覆盖 item() 或 list() 方法,但我希望它们返回一个ClassB项目(或向量)而不在返回时进行强制转换(这是我现在当前的解决方案)。有什么办法吗?提前致谢。

4

1 回答 1

3

我将创建第三个类 (ClassC) 来保存您的 ClassA 或 ClassB 项目,它使用如下泛型类型进行参数化:

class ClassC<T extends ClassA> {
    T item(...) {...}
    Vector<T> list(...) {...}
}

现在,您可以使用 ClassA 或 ClassB 类型实例化 ClassC,而不必担心类转换。

于 2012-04-22T11:34:36.853 回答