簡體   English   中英

為什么我們不能序列化Java中的方法?

[英]Why can't we serialize the methods in Java?

序列化是一種存儲對象狀態的機制。 基於此定義,我們可以說對象中的實例變量可以序列化。 方法是類的行為。

我們可以使用這些方法設置並獲取對象的狀態。 因此,方法與類的實例變量有關。

那為什么不能在Java中序列化這些方法呢?

您打算在方法“序列化之后”進行什么處理? 根據定義,對象的狀態必須僅是其成員。 他們的行為不會出現。 序列化可以保存對象的狀態,而不是行為。

從OOP角度來看,對象的狀態是其非靜態字段的總狀態。 方法是定義對象行為的一種方法,並且是該類的所有實例(對象)所共有的,因此方法被定義為Class對象上的字段,而不是對象(實例)本身的字段。 因此,序列化對象將只存儲其狀態,因此僅存儲其字段,但是如果序列化對象的Class對象,則將序列化那些對象的方法(我認為沒有人會為此而煩惱)。

方法總是序列化的:作為類文件中的字節碼。 實際沒有必要再次序列化它們。

因為方法對於類的所有實例都是相同的,所以它們僅由其數據驅動。 如果您的應用程序中有類定義,則可以使用它的方法。

但是數據可能會因實例而異。

每個方法都沒有任何狀態,並且序列化的方法調用不能用於任何事情。 另一方面,從概念上講,串行化線程是計算的快照或檢查點,這很有用。

但是,線程無法在Java中進行序列化,因此實在很難實現。 (例如,您如何應對在對線程進行序列化和反序列化之間更改其中一個活動方法的代碼的情況?)

暫無
暫無

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

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