我知道無法將引用傳遞給另一臺機器上的對象或單獨的進程,但是可以將對象作爲引用的對象是否也通過套接字發送?或者,實現同樣目標的唯一方法是將兩者都作爲對象傳遞,然後在接收到「數據包」對象時重新指定它們的引用?通過Java中的套接字傳遞包含在'數據包'對象中的對象的引用
當我寫這篇文章時,我想到了另一個想法,當序列化引用時,Java Serializable類是否複製了引用的內容?
我知道無法將引用傳遞給另一臺機器上的對象或單獨的進程,但是可以將對象作爲引用的對象是否也通過套接字發送?或者,實現同樣目標的唯一方法是將兩者都作爲對象傳遞,然後在接收到「數據包」對象時重新指定它們的引用?通過Java中的套接字傳遞包含在'數據包'對象中的對象的引用
當我寫這篇文章時,我想到了另一個想法,當序列化引用時,Java Serializable類是否複製了引用的內容?
您可以傳遞對象的引用,因爲它只是一個數字。接收端只看到一個數字。
您可以複製對象的內容和它來自的地址,但地址對您仍然無用。
Java序列化執行深度序列化,複製它引用的所有對象。
@rob任何參考的對象是無法序列防止正在序列整個數據結構(和破壞了流) –
在Java沒有得到實際的參考號碼的方式。無論哪種方式對我沒有幫助。我本質上是問是否有辦法保存Java引用,如果被引用的對象也是通過套接字發送的。我不認爲Java可以做到這一點。即使我可以得到實際的參考號,在另一臺機器上也沒用。即使在另一個過程中,因爲該對象不會在該地址存在。 – Kylelem62
「引用」是一個內存地址。你不知道在遠程系統上的內存地址是什麼,所以我會說正式的「不」。但是,您可以發送對象的完整副本,並在遠程端重建副本。一些人稱之爲序列化,一些人稱之爲「編組」,但實質上你會有2個嚴格的複製品。但是,那些副本就是......複製品。改變不會影響對方的改變,除非你手動以某種方式同步你的對象。 – CodeChimp
這就是我想我必須要做的。問題是我有兩個對象數組包含對另一個類型的數組中的特定對象的引用。所以我想我必須重新創建引用。重新發布爲答案?這是我正在尋找的。謝謝。 – Kylelem62
所以,你有兩個對象,每個都有一個數組/集合,並且它們互相引用?像ManyToMany什麼的?你有沒有考慮過一次發送整個blob?也許將所有需要發送的對象包裝在一些消息包裝器中,這樣當它們彈出另一端時它們全部連接在一起? – CodeChimp