public class Test {
private String id="";
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String name="";
public static void main(String[] args) {
Test test=new Test();
test.setId("1");
test.setName("cc");
changeId(test);
System.out.println(test.getId());
}
public static void changeId(Test test)
{
Test tt=new Test();
tt=test;
tt.setId("2");
System.out.println(tt.getId());
}
}
/**我要改变一个对象的值,另一个对象不改变值。
求高手指点
第一个办法肯定不是好的办法,test的属性有100多个,这样一个一个只是肯定不是最好的。第二种方法的话,我就需要改框架了。
追答那就实现Cloneable接口,调用clone方法
test的属性很多,如果把test的属性一个一个设置给tt肯定不是对好的办法,现在我想获取test的属性给tt,tt在test基础上改变其他属性的值。然后test作为一条记录插入数据库,tt作为一条记录插入数据,需要这样的目的
追答以前好像记得有个深克隆还有个浅克隆,能解决你的问题,但是我很长时间没有用了,不记得怎么用了,搜搜看吧
额,test属性有100多个,一个一个设置?
请问还有其他办法么?
追答在我的知识范畴内没有了。你也可以自己写一个方法复制某个对象的属性和方法,如果是两个变量指向同一个对象实例,你的要求根本不可能达到
追问嗯,对象只向了一个引用,改变其中一个另一个肯定改变的,所以才请大家帮忙看看有什么办法能解决这个问题
追答”获取test的属性给tt,tt在test基础上改变其他属性的值。然后test作为一条记录插入数据库,tt作为一条记录插入数据,需要这样的目的“,这个倒是有办法。
1,从数据库读取 test的记录,取出来封装为一个对象,赋值给变量tt。
2,修改tt的主键id,设置为新值,然后在修改其他的属性。
3,将这个对象保存到数据库。
1,从数据库读取 test的记录,取出来封装为一个对象,赋值给变量tt。
2,修改tt的主键id,设置为新值,然后在修改其他的属性。
3,将这个对象保存到数据库。
这个方法不行的,因为test和tt是作为批量sql执行的,他们的加到list中,循环list插入数据的。
那就没有办法了,用clone吧
本回答被提问者采纳