这里我已经有了一些代码来将内核模型“转移”到外部插件的“输出”模型。为此,我创建了基于传递的OldConnection的具体子类型的新实例,并将旧实例传递给构造函数,这样我就可以轻松地为getter和setter维护内部数据。在Java中将内核模型转换为输出模型
因此,OldIncoming,OldOutgoing和OldExpected是OldConnection的子类型。 MyNewIncoming,MyNewOutgoing和MyNewExpected是MyNewConnection的子类型。不幸的是,我不能改变内核模型,我需要构造函数中的具体类型。
代码看起来很丑陋,但我只是找不到更好的解决方案,任何想法?
private MyNewConnection createIConnectedSubtypeInstance(OldConnection connection) {
if (connection instanceof OldIncoming){
return new MyNewIncoming((OldIncoming) connection);
}
if (connection instanceof OldOutgoing){
return new MyNewOutgoing((OldOutgoing) connection);
}
.
.
.
if (connection instanceof OldExpected){
return new MyNewExpected((OldExpected) connection);
}
return new MyNewConnection(connection);
}
如果我理解正确,他不能更改OldConnection代码,这可能是为什么他首先需要MyNewConnection包装。 – pushy
你是对的,我错过了。 +1为您的答案 – MartinZ