2 aaron 2014 Aaron_2014 于 2014.07.24 12:38 提问

一个用intent传递对象的疑问

我写了两个Activity,一个是MainActivity,里面通过intent把一个实体类User对象传递过去,

    User user = new User();
    user.setId(1);
    user.setName("zhangsan");

    Intent intent = new Intent();
    intent.setClass(this, TwoActivity.class);
    intent.putExtra("user", user);

    startActivity(intent);
            Log.d("main", user+"");

另一个TwoActivity里面,接收这个User对象:
Intent intent = this.getIntent();
User user = (User) intent.getSerializableExtra("user");

    Log.d("two", user+"");

问题:打印出来的两个user竟然不是同一个地址?这也就是意味着user被传递过去竟然不是同一个对象了?这个我实在不是很理解,这怎么想都有点不科学啊,求解答。

2个回答

zcdreaming
zcdreaming   2014.07.25 23:25

可以这样理解,当把一个对象从一个地方传到另一个地方,传递的不是引用,它的地址肯定会改变,世界上没有两个相同的地址。更深层次理解应该是传递前的处理:传递前根据该对象序列化,接收后反序列化再重新生成该对象,根据序列化和反序列化的规则,某些特征应该是一样的,包括值。

Aaron_2014
Aaron_2014 嗯,你说的对
大约 3 年之前 回复
yudajun
yudajun   2014.07.26 21:45

实体类User实现Serializable 接口即可一致了。

Csdn user default icon
上传中...
上传图片
插入图片