繁体   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