簡體   English   中英

為什么我不能傳遞與包裹/串行對象相對的引用地址?

[英]Why can I not pass reference address as opposed to Parcel/Serial Object?

根據StackOverflow和Internet的說法,傳遞對象的方法是序列化或打包(或使用“靜態”-皺眉)。

我想知道為什么我不能通過地址

     MainActivity.toString();  // MainActivity@b0ff5f80

然后在新類/活動中,只需更改新創建對象的地址?

MainActivity originalMainActivity = new MainActity();
originalMainActivity = getIntent.getStringExtra("originalMainActivity");
//yes I realize the above line is incompatible....Obj != String 

如果對象已經創建並且位於堆中(我認為是?),為什么不能重新分配地址? 如果可以,請提供示例嗎? 謝謝。

ps(畢竟,當我們在構造函數中傳遞類對象時,我們實際上並沒有傳遞參考地址)Thx。

您似乎在考慮地址,就像您使用C或C ++。

然而:

  1. 您完全誤解了toString的目的:在一般情況下, toString的唯一有效用法是打印對象的表示形式,以用於調試目的。 沒有什么可說的,以后可以使用該字符串來重新生成或再次找到該對象。

  2. Java語言沒有提供任何訪問內存地址的方法,部分原因是垃圾回收器通常可以自由地重新排列內存。 解決該問題的唯一方法是固定對象並在Java語言之外進行操作。

此外,您應該理解,當您從Parcel取出一個對象時,您不一定處於同一進程中(即使它是您的進程,您的進程也可能在重新啟動之前已經被后台殺死)-因此您的方法只能在少數情況下工作。

然后,在新類\\活動中,只需更改新創建對象的地址?

除其他原因外,因為在Java中這是不可能的。

暫無
暫無

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

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