簡體   English   中英

序列化的Java對象是否應該每次序列化時始終用相同的字節序列表示?

[英]Should a serialized Java object always be represented by the same sequence of bytes each time is it serialized?

例如,如果對象實例被序列化(結果為'byte [] bs1'),然后再次序列化(結果為'byte [] bs2'),則'bs1'和'bs2'的長度應相同且包含相同的字節? 如果沒有,為什么不呢?

為避免歧義,我應該說同一對象(不是兩個“相同的”對象-同一實例)的兩次序列化發生在彼此之間的毫秒內,在同一線程中,在同一JVM上-在(可變)之前)對象被傳遞給一個方法。

注意,對象甚至沒有被序列化, 序列化然后再序列化-它只是被序列化了兩次。 同樣,關於對象的類根本沒有什么“聰明”之處。 這只是一個簡單的聚合POJO。

我使用序列化的字節作為臨時測試來檢測對象是否在方法內部被更改。 但是,我似乎看到了一些示例,其中對象顯然沒有改變其狀態-但是一個byte []與另一個字節不同。

我當時假設-只是一個假設-他們會是一樣的。 它們可能不是某些原因嗎?

附錄:

此外,對於沒有示例代碼的道歉也無法說明這一點。 當前,這是嵌入大型系統中的一小段代碼。 如有必要,我將嘗試提取一個較小的,可運行的演示。 我想知道我的假設是否存在一個基本問題,因此是否有人可以解釋為什么該假設是錯誤的。

它不一定總是與序列化產生的字節序列完全相同 例如,即使我們在談論單個實例,也不保證Set序列化其元素的順序是恆定的。

Java ArrayList<object> 如果將其轉換為 JSON(Serialized) 並回讀,則保持其序列?<div id="text_translate"><p> 我有一個發布工作流程的案例,該工作流程包括通過 kafka 主題的順序步驟。 有大約 15 個步驟的序列,我首先生成序列,將其發布到讀取它的 kafka 主題,執行一個序列,然后將其發布回 kafka。</p><p> 為此,重要的方面是正確維護順序。 我曾想過使用類似 Graph 的數據結構,但我很好奇如果我使用簡單的 Java Arraylist,那行得通嗎?</p></div></object>

[英]Does Java ArrayList<Object> maintain its sequence if its converted to JSON(Serialized) & then read back?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM