【发布时间】:2010-07-01 17:30:12
【问题描述】:
假设您有一个无法更改的 API:
List<LegacyObject> getImportantThingFromDatabase(Criteria c);
Imaging Legacy Object 有大量字段,您希望对其进行扩展以更轻松地获取某些信息:
class ImprovedLegacyObject extends LegacyObject {
String getSomeFieldThatUsuallyRequiresIteratorsAndAllSortsOfCrap() {
//cool code that makes things easier goes here
}
}
但是,您不能只转换为 ImprovedLegacyObject,即使字段都相同并且您没有更改任何底层代码,您只是添加到它以便使用 @ 的代码987654324@ 仍然有效,但新代码更容易编写。
是否有可能有一些简单的方法将LegacyObject 转换为ImprovedLegacyObject 而无需重新创建所有字段或访问器?这也应该是一个快速的操作,我知道您可以通过使用反射来复制所有属性来执行某些操作,但我认为这对于大量 LegacyObjects 这样做还不够快
编辑:你可以用静态方法做些什么吗?装饰现有对象?
【问题讨论】: