对象Person ,当我点击“随机”按钮生成一个person实例,点击“插入”时,将Person插入到ArrayList中,
但插入后,所有值都变成一样了,为什么?public class Data {
private ArrayList<Person> all = new ArrayList<Person>();
public void addToAll(Person person){
all.add(person);
}
...setter getter
}
public class test { Person person = new Person();
Data data = new Data(); public void random(MouseEvent evt){
//生成person
} public void insert(MouseEvent evt){
data.addToAll(person); // 添加完后所有值都变一样了
}
}
但插入后,所有值都变成一样了,为什么?public class Data {
private ArrayList<Person> all = new ArrayList<Person>();
public void addToAll(Person person){
all.add(person);
}
...setter getter
}
public class test { Person person = new Person();
Data data = new Data(); public void random(MouseEvent evt){
//生成person
} public void insert(MouseEvent evt){
data.addToAll(person); // 添加完后所有值都变一样了
}
}
解决方案 »
- 关于结果集的resultSet.deleteRow()
- JAVA TOMCAT 连MYSQL 出现了问题(急)
- 请问学JAVA的哪方面工作好找些呢??
- JSP运行问题
- java程序运行中,如何修改背景色?在线等!
- windows下面用JAVA进行USB通信?
- 高手救急!怎么通过URL传出用户名和密码?
- 取得文件行数错误,百分请教!
- 如何读取数据库的内容而动态的生成一个tree??有没有比较好的算法???(急!!!!!!)
- HelloWorld.class如何在windows & liunx平台下运行?
- 一道Java面试题之实现复制、删除、剪切文件(文件夹的实现)的snippet,欢迎拍砖
- 不显示删除回复显示所有回复显示星级回复显示得分回复 怎么样利用点击第一个程序“登入”按钮 ,弹出第二个程序的窗体??? 我是初学者 最好是帮我修改下。。。谢
你只创建了一个对象!所以地方的操作都是对该对象的引用,而不是复制了一个对象。public class test { Person person =null; //改为null
Data data = new Data(); public void random(MouseEvent evt){
person = new Person(); //这里
//生成person
} public void insert(MouseEvent evt){
data.addToAll(person); // 添加完后所有值都变一样了
}
}
Data data = new Data(); public void random(MouseEvent evt){
//生成person
}
你在随机生成person的时候是不是直接用的上面已经定义好的那个person而不是重新new出一个来,形如Person person = new Person();
Data data = new Data(); public void random(MouseEvent evt){
person = ...;
}
这样加入进去的都是一样的,因为你向list中加入的只是一个Person的引用person,person只能是指向一个Person实例.当你在后面更行person的时候,前面的引用也会跟着变的.(可能这地方说的不是太清楚)
正确的添加方法是:Person person = null;
Data data = new Data(); public void random(MouseEvent evt){
person = new Person();
person =....;
}这样你每次执行random()方法是person变量都不是同一个,他所指向的Person也不会相同了
可能有点罗嗦,只是希望你能看明白
Data data = new Data(); public void random(MouseEvent evt){
//生成person
}先声明一个Person的对象,把实现放到你的random里,再插入就可以了