2011-04-28 48 views
0

我有一個Java模擬器序列化自定義結果對象。我想在Matlab中反序列化這些對象以進行進一步的統計分析。如何在Java中序列化在Java中反序列化用戶定義的Java對象?

這可能嗎?

Result對象中的數據是異構的。它包含另一個用戶定義的類參數,整數和雙精度鏈表。

我編輯了classpath.txt文件到我的java包的根目錄並導入了Result和Parameters兩個成功。但是,如果我嘗試用負載('文件名')反序列化一個對象,我收到以下錯誤

>> load('Type3aa_simpleToCreate_no_com.2011-04-28 
00.05.29.experiment.data') ??? Error using ==> load Number of columns on 
line 1 of ASCII file 
C:\Thesis\code\Thesis 
v0.7\Results\Type3aa_simpleToCreate_no_com.2011-04-28 
00.05.29.experiment.data must be the same as previous lines. 

回答

0

我沒那麼熟悉混合Matlab和Java的,但解碼東西,這比Java代碼別的東西使用Java串行編碼似乎將是困難的。序列化將許多與Java代碼的特定編譯相關的註釋混合到數據中。

我認爲如果你想將它讀入Matlab,你最好用一些類似文本的格式寫數據。

順便說一句,序列化有一些問題,使得它很少使用,即使只是在Java內部。對特定版本的類文件的依賴是一回事,另一個是它出了名的緩慢。我個人不會將它用於任何事情,但更喜歡創建自己的編碼格式,無論是text/xml還是一些緊湊的二進制格式。

更新:我對序列化緩慢的觀點和經驗基於對開銷的容忍度很低的應用程序,可能並不適合所有人。

+0

你對序列化的評論是可疑的。它可能在1997年和其他所有事情一樣緩慢:當然不是現在,從來沒有「臭名昭着」如此。序列化被廣泛使用,例如在RMI中,因此JMX; Web服務器會話和託管的bean; ... – EJP 2011-04-29 00:17:55

+0

感謝您的意見。我決定讓java將變量寫到一個文件中,從中我創建一個Matlab結構。 – Ruben 2011-04-29 16:26:37

+0

我對序列化的評論基於個人經驗。我放棄了它,因此RMI也在2003年左右放慢了速度,我的印象是它已經在很大程度上被HTTP取代,成爲通過網絡交換消息的首選協議。但當然不是每個人都有相同的標準。 – njlarsson 2011-04-29 22:05:56