如何实现一个对象变成另一个相同类型的对象

bayerfly 2009-11-02 11:52:58
难道只有一个一个属性SET,这种方法吗?
...全文
282 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
bayerfly 2009-11-06
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 djt_1982 的回复:]
引用 13 楼 bayerfly 的回复:
引用 10 楼 cangyingzhijia 的回复:
不增加内存而要获得东西,做梦吧你


你们说克隆,是这样吗?
class A;
A a=new A(1);
A b=new A(2);

a=b.clone();

这种方法有一个非常不好的地方。
增加内存倒不说,放弃了原先的那块内存。



你没事a= new A(1);干吗?
直接
A b=new A(2);

A a=b.clone();不可以吗?

[/Quote]
因为是在一个函数里边,只能得到这引用a
bayerfly 2009-11-03
  • 打赏
  • 举报
回复
提下。大家继续研究。
djt_1982 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 bayerfly 的回复:]
引用 10 楼 cangyingzhijia 的回复:
不增加内存而要获得东西,做梦吧你


你们说克隆,是这样吗?
class A;
A a=new A(1);
A b=new A(2);

a=b.clone();

这种方法有一个非常不好的地方。
增加内存倒不说,放弃了原先的那块内存。

[/Quote]

你没事a= new A(1);干吗?
直接
A b=new A(2);

A a=b.clone();不可以吗?
fskjb01 2009-11-02
  • 打赏
  • 举报
回复
序列化
bayerfly 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 djt_1982 的回复:]
clone,但要注意深克隆和浅克隆的问题
[/Quote]
还要加个限制条件,再不增加内存的情况下,克隆就加了块内存了。
还有其他方法不?
closewbq 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 djt_1982 的回复:]
clone,但要注意深克隆和浅克隆的问题
[/Quote]
同意
djt_1982 2009-11-02
  • 打赏
  • 举报
回复
clone,但要注意深克隆和浅克隆的问题
bayerfly 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liguominz 的回复:]
你是想得到一个相同值但内存地址不一样的对象?
[/Quote]
是的
原本是不同值内存地址不同,而后要使得他们的值相同,有没有更便捷的方法?
liguominz 2009-11-02
  • 打赏
  • 举报
回复
你是想得到一个相同值但内存地址不一样的对象?
liguominz 2009-11-02
  • 打赏
  • 举报
回复
啥意思??
说明白点~
苍蝇①号 2009-11-02
  • 打赏
  • 举报
回复
序列化和反序列化的时候很费内存的,有一次我序列化一个100多M的类,直接内存飙升到1G多
bayerfly 2009-11-02
  • 打赏
  • 举报
回复
提一下
bayerfly 2009-11-02
  • 打赏
  • 举报
回复
就是这个shape=oldshape
shape=newshape
这两步实现不了。
在这边对这个引用怎么操作,改变不了原先链表里存的那个引用所指向的内存。
bayerfly 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 haojia0716 的回复:]
引用 18 楼 bayerfly 的回复:
引用 17 楼 haojia0716 的回复:
你既然要内存地址不一样 当然要从新开辟内存空间啊

情况是这样的,有个linkedlist,里面存着我定义的myshape类的对象,我用
linkedlist的get方法取到一个对象的引用,我怎样才能操控这个引用所指向的内存的数据?



直接操纵

我不太明白你的意思
[/Quote]

再具体点的实现吧,实际上我是在做UNDO和REDO。
链表中取到的引用为shape
UNDO时
shape=oldshape
oldshape为旧的对象
shape=newshape
newshape为新的对象





haojia0716 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 bayerfly 的回复:]
引用 17 楼 haojia0716 的回复:
你既然要内存地址不一样 当然要从新开辟内存空间啊

情况是这样的,有个linkedlist,里面存着我定义的myshape类的对象,我用
linkedlist的get方法取到一个对象的引用,我怎样才能操控这个引用所指向的内存的数据?

[/Quote]

直接操纵

我不太明白你的意思
chump345 2009-11-02
  • 打赏
  • 举报
回复
class A{

}
A a = new A();
A b = new A();
bayerfly 2009-11-02
  • 打赏
  • 举报
回复
关键问题,不管是序列化还是克隆,都无法改变引用所指向的内存块的数据。
bayerfly 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 haojia0716 的回复:]
你既然要内存地址不一样 当然要从新开辟内存空间啊
[/Quote]
情况是这样的,有个linkedlist,里面存着我定义的myshape类的对象,我用
linkedlist的get方法取到一个对象的引用,我怎样才能操控这个引用所指向的内存的数据?
haojia0716 2009-11-02
  • 打赏
  • 举报
回复
你既然要内存地址不一样 当然要从新开辟内存空间啊
haojia0716 2009-11-02
  • 打赏
  • 举报
回复
我想了想 其实还是占内存的 读回来的时候
加载更多回复(8)

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧