我从对外部 API 的调用中获得了几个Foo类型的对象。在本地,我想用一些附加信息来处理这些对象,所以我有一个子类FooSon来添加这些额外的字段。如何将我获得的所有这些对象转换为我的新继承类型?向下转换似乎不是一种选择,因为这些对象并不是真正的FooSon。
我想出的唯一解决方案是创建一个转换函数,它将Foo对象作为参数,然后将所有公共/受保护的值复制到一个新的FooSon对象,然后返回该对象。
缺点是:
- 丢失信息(私人价值)
- 如果Foo改变了,必须调整转换函数。
Foo 类不实现复制构造函数或克隆运算符。我有 Foo 源代码,但我想避免更改它以保持与未来版本的兼容性。不过,如果它是唯一可行的选择,我会更改 Foo 实现以获得我需要的东西。