作者erttyy8821 (侠)
看板java
标题[问题] 同一物件不同值
时间Tue Sep 30 16:01:41 2014
不太确定标题怎麽下比较好
大概状况是
今天有三个物件
public class aa
{
ArrayList<bb> bArraylist
.
.
}
public bb
{
ArrayList<cc> cArraylist
String name;
boolean setting;
.
.
}
public cc
{
String name;
boolean setting ;
.
.
}
我会需要new 很多个aa物件
但我希望保持每个new出来的aa物件底下的 bArraylist,cArraylist资料都同步
bb cc 的name也是同步
只保留bb cc 的setting各自有各自的设定
现在的想法是creat一个独立的main aa
当对这个main aa物件做修改的时候 其他new出来的物件再做同样的事情
但是变成在初始化的时候,其他new出来的物件必须先clone main aa一次
我想问有其他更好的做法吗?
又我在做deep clone的时候
发现只有bb会是独立的记忆体,但是cc又指向同样的位子了
是不是我连cc 也要implements Cloneable 然後一个一个加到bb 再加回aa呢?
不好意思这问题我觉得有点笨
但我想了几天了实在想不到比较好的方法
还希望各位先进可以提供一些方向
感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.136.206.17
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1412064107.A.B28.html
※ 编辑: erttyy8821 (223.136.206.17), 09/30/2014 16:02:22
1F:→ adrianshum: static? 09/30 16:22
2F:→ adrianshum: 其实不太搞得清楚你说的同步是什麽意思 09/30 16:23
同步的意思
假设今天new 了三个aa: aa1,aa2,aa3
我在aa1.bArraylist add一个物件 希望aa2,aa3也可以同时add一个物件
又或者我修改 aa1.bArraylist.get(0).name aa2,aa3同时也可以修改
但是如果是 aa1.bArraylist.get(0).setting aa2,aa3 并不会改
我有想过用static 但是这样的话setting不是也会一起被改吗?
所以我create一个 static main aa做为参考
让其他new出来的aa先copy这份,在各自修改setting
但总觉得这样copy很浪费记忆体 才想问有没有其他更好的方式?
※ 编辑: erttyy8821 (223.136.206.17), 09/30/2014 16:32:27
3F:→ swpoker: prototye~请参考设计样式中的范本建立工厂 09/30 17:01
感谢!!!! 这就是我要的
※ 编辑: erttyy8821 (203.74.126.1), 09/30/2014 20:17:14
4F:→ adrianshum: 就只有那个 array list 是 static 呀,效果就是你 09/30 23:59
5F:→ adrianshum: 所描述那样。prototype 并不会做到你想要的效果吧 10/01 00:00
6F:→ adrianshum: 除非我理解错你的解释了 10/01 00:00
7F:→ adrianshum: oh 看漏了 setting 不会改一句 10/01 00:01