推 bala045:visitor pattern 05/27 21:07
假設我有一個class 叫A 而 B 跟 C 跟 D 是3種繼承自A的class
今天我有一個
ArrayList<A> objArray;
我用ObjectOutputStream將objArray的東西寫到檔案後
過一會兒 我想要讀出來了
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(f));
Object obj;
while(ois.available > 0){
obj = ois.readObject();
SomeOne.doSomething(obj);
}
//----------------------------------------------------------------
class SomeOne{
public void doSomething(B b){...}
public void doSomething(C c){...}
public void doSomething(D d){...}_
}
這樣子 compile當然是 .... 不會過 一定要強制轉型
我一直想說在SomeOne.doSomething(obj)這一行變成
Class myClass = obj.getClass();
SomeOne.doSomething((myClass)obj); <--- 這樣子 還是不行...
有沒有辨法 不用if 做到這件事??? 將obj轉成我想要的型態
我也不想用 instanceof
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.69.114.105
※ 編輯: neigence 來自: 210.69.114.105 (05/27 11:24)
※ 編輯: neigence 來自: 210.69.114.105 (05/27 11:36)