我从外部API调用中获得了 Foo 类型的几个对象。在本地,我想用一些添加的信息来处理那些对象,所以我有一个子类 FooSon 来添加那些额外的字段。如何将所有获得的对象转换为新的继承类型?向下转换似乎不是一种选择,因为这些对象并不是 FooSon

我想出的唯一解决方案是创建一个转换函数,该函数将 Foo 对象作为参数,然后将所有公共/受保护的值复制到新的 FooSon 对象,然后返回该对象。

缺点是:

  • 丢失信息(私有值)
  • 如果 Foo 曾经更改过,则必须适应转换功能。

  • Foo类没有实现复制构造函数或克隆运算符。我有Foo源代码,但我想避免对其进行更改,以保持与将来版本的兼容性。不过,如果这是唯一可行的选择,我将更改Foo实现以获取所需的东西。

    最佳答案

    FooSon可能在其中包含一个Foo。然后只需将返回值分配给该字段。然后,您可以在Fooson中创建将其调用委托给Foo字段的方法,以从外部从Foo中获取您所需的信息。

    09-10 06:49
    查看更多