假設我有擴展超類的類SubClass1和SubClass2。我需要將所有擴展超類的對象存儲在一個列表(列表列表)中。現在我將這個列表傳遞給一個函數,它可以計算出SuperClass之前的哪個SubClass。這個函數然後應該將SuperClass重新轉換回它們各自的子類。例如,將子類對象存儲爲超類並稍後檢索子類
for (SuperClass superClass : list) {
if (superClass.getType().equals("SubClass1")
SubClass1 subClass = (SubClass1) superClass;
else if (superClass.getType().equals("SubClass2")
SubClass2 subClass = (SubClass2) superClass;
}
此示例將導致類轉換異常。有沒有簡單的解決方案來獲得這個功能?
編輯:正如其中一個答案中提到的,這段代碼應該會導致異常。在這個例子中,getType()方法必須有錯誤。但是,使用instanceof關鍵字的解決方案通過消除對getType()方法的需求來解決問題。