這裏我已經有了一些代碼來將內核模型「轉移」到外部插件的「輸出」模型。爲此,我創建了基於傳遞的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