2011-06-21 12 views
0

我有不同種類的可序列化的ObjectState的存儲重要應用程序對象的狀態數據。我這樣做,所以我可以堅持這些重要的對象arcoss應用instatances。用戶有時需要將某些對象組合到容器中,因此ObjectState的一些被放入ObjectState的數組中,並傳遞給ContainerState(只是一個包含可序列化的泛型類型的可序列化類)。Java:De-Serialize一個泛型序列化的容器?

我的問題是,如何反序列化ContianerState並保持類型完整性?我想我可以嘗試這樣的:

public static ContainerState<V> inflateState(V v, Serializable state) throws ClassCastException { 
    return (ContainerState<V>)state; 
} 

但是,這甚至不會通過日食的警告系統。我也嘗試V.class達到相同的結果。我能做到這一點甚至可能嗎?

編輯1:

我想這一點,似乎工作,但我不知道這是否是最好的方式。有什麼想法嗎?

public static <cls extends Serializable> ContainerState<cls> inflateState(Class<? extends Serializable> cls, Serializable state) throws ClassCastException { 
    return (ContainerState<cls>)state; 
} 

回答

0

這應該至少編譯:

public static <C extends Serializable> ContainerState<C> inflateState(Class<C> cls, Serializable state) throws ClassCastException { 
    return (ContainerState<C>)state; 
} 
+0

呵呵,謝謝,我想通了。我得出了你所做的確切結論,只是沒有回答我的問題(我是一個該死的懶鬼:-P)。因爲我沒有發佈信息,所以你的信用是你的。 – AedonEtLIRA