2
是否可以動態添加到由對象實現的接口列表中(因此instanceof
返回true並且強制轉換不會失敗)?在運行時更改對象的實現接口
我有一組對象,其類型需要在運行時動態更改。隨着狀態的改變,更多的方法/屬性變得有效。目前,這是以「蠻力」的方式完成的......所有成員都暴露出來,在錯誤的時間調用錯誤的是一個錯誤。理想情況下,我想使用靜態類型,並將這些對象傳遞給需要特定接口的方法。對象實現的接口集合只會增加,所以舊的引用將保持有效。
在運行時是否可以使用內置反射或通過第三方字節碼操作來更改對象的實現接口?
我不是100%確定你正在嘗試做什麼,請詳細說明。無論哪種方式,反射或'instanceof'的使用是一種代碼異味,並且表示您的代碼應該需要重構。可能有一種設計模式可以滿足你的需求。 – amit 2015-03-03 09:09:01
靜態類型意味着編譯時執行,這與您希望類型在運行時更改的要求不一致。 – 2015-03-03 09:10:06
@amit,「代碼味道」可能會或可能不會表明一個不好的解決方案(否則這將是一個語法錯誤)。在運行時使用'instanceof'來推斷對象的類型是有原因的。 – 2015-03-03 09:10:49