2013-04-02 54 views
1

我混淆有關的serialVersionUID有人告訴如果我沒有定義的serialVersionUID這將是影響性能,所以我需要結束這個的Java類沒有定義的serialVersionUID影響性能或不

從我的知識,我的理解,在Java編譯器中如果您需要在2個類之間進行通信,或者您需要使用1個任務到1個任務之間的對象通信。它應該在發送者和接收者中生成serialVersionUID,當發送者把對象放入serialVersionUID到對象中,然後接收到對象時驗證對象是否正確,否則將繼續該過程它會拋出異常

所以,如果我沒有把serialVersionUID,所以Java編譯器將在運行時從我的理解定義它,所以我認爲這是不影響執行Java時的性能

我希望我的理解應該是正確的如果不是請幫助另一個一個在這個網站建議

謝謝

回答

3

這些細節的答案總是可以在規範中找到。

如果一個序列化的類不顯式聲明的serialVersionUID,則序列化運行時將計算默認的serialVersionUID值用於基於所述類的各個方面在該類,作爲Java(TM)描述對象序列化規範。

欲瞭解更多,請訪問java.io.Serializable。

答案是它會但真正的問題多少?

這個問題的答案可以在這篇文章中找到Into the mist of serialization myths

結論是,影響並不那麼重要,但代碼管理的成本可能更高。總是對這類問題的最終答案取決於項目規模和應用程序的工作環境。

0

首先將serialVersionID生成/添加到實現Serializable接口的類中,它有助於在對象的非傳遞期間進行操作。所以,您不必擔心可能的性能問題,但絕對應該考慮將serizalVersioItd提供給Serializable類。

this thread中,您可以閱讀有關serialVersionID的用途。

0

所以,如果我不把的serialVersionUID所以Java編譯器將在運行時從我可以把它定義理解,所以我認爲它不會影響性能時

該聲明沒有按」執行的Java沒有意義。編譯器在運行時無法做任何事情。如果省略它,那麼當該類首次被任何特定的ObjectInputStreamObjectOutputStream使用時,一次將計算它。

開銷並不顯着。