问个简单的有关问题,一个对象怎么拷贝到另一个对象中去
问个简单的问题,一个对象如何拷贝到另一个对象中去?
比如现有一个用户对象User,其属性有userid,username,userage(实际很多属性,这里简化)
然后创建两个对象,user1与user2,分别赋值如下:
user1.setUserid(1);
user1.setUsername("name1");
user2.setUserid(1);
user2.setUserage(20);
我如何把user2中的年龄拷贝到user1中去呢?
当然,正常的做法是:user1.setUserage(user2.getUserage());//这个不算
由于属性很多,如果都这样写的话,显然麻烦些,不知道有没更方便的方法呢?
------解决方案--------------------
重写克隆函数
protected native Object clone() throws CloneNotSupportedException;
http://pengcqu.javaeye.com/blog/493120
------解决方案--------------------
1.将user实现Cloneable接口
2.在user中实现clone()方法
3.在clone方法中直接写:super.clone()。
4.然后就克隆对象就行了User u2 = (User)user1.clone();
------解决方案--------------------
克隆等于全部属性值都给了u2了
如果你只是部分属性值
还是老老实实用set方法吧~
------解决方案--------------------
办法是有的,只不过比较麻烦!
如果你不想要恢复哪些字段,你就把哪些字段设置成为transient。
然后通过ObjectOutStream对象,通过writeObject(user1);
写出。
然后通过ObjectInputStream的user2=(user)readObject();
读入,那么user2,就是你想要的结果!
这方法有点恶心!嘿嘿
------解决方案--------------------
如果都要某一个字段都要相同,那么用static限定一下就是了,改变一个对象,其他对象的该属性都会改
------解决方案--------------------
了像还没有发觉其他更好滴办法去解决此问题
------解决方案--------------------
你看看这个例子
比如现有一个用户对象User,其属性有userid,username,userage(实际很多属性,这里简化)
然后创建两个对象,user1与user2,分别赋值如下:
user1.setUserid(1);
user1.setUsername("name1");
user2.setUserid(1);
user2.setUserage(20);
我如何把user2中的年龄拷贝到user1中去呢?
当然,正常的做法是:user1.setUserage(user2.getUserage());//这个不算
由于属性很多,如果都这样写的话,显然麻烦些,不知道有没更方便的方法呢?
------解决方案--------------------
重写克隆函数
protected native Object clone() throws CloneNotSupportedException;
http://pengcqu.javaeye.com/blog/493120
------解决方案--------------------
1.将user实现Cloneable接口
2.在user中实现clone()方法
3.在clone方法中直接写:super.clone()。
4.然后就克隆对象就行了User u2 = (User)user1.clone();
------解决方案--------------------
克隆等于全部属性值都给了u2了
如果你只是部分属性值
还是老老实实用set方法吧~
------解决方案--------------------
办法是有的,只不过比较麻烦!
如果你不想要恢复哪些字段,你就把哪些字段设置成为transient。
然后通过ObjectOutStream对象,通过writeObject(user1);
写出。
然后通过ObjectInputStream的user2=(user)readObject();
读入,那么user2,就是你想要的结果!
这方法有点恶心!嘿嘿
------解决方案--------------------
如果都要某一个字段都要相同,那么用static限定一下就是了,改变一个对象,其他对象的该属性都会改
------解决方案--------------------
了像还没有发觉其他更好滴办法去解决此问题
------解决方案--------------------
你看看这个例子
- Java code
/* 简单类克隆实现 * 要实现克隆,必须实现Cloneable接口,这是一个标识接口,没有接口方法 * 实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。 * 按照惯例,实现此接口的类应该使用公共方法重写 Object.clone(它是受保护的)。 */ public class CloneFooA implements Cloneable { private String strA; private int intA; public CloneFooA(String strA, int intA) { this.strA = strA; this.intA = intA; } public String getStrA() { return strA; } public void setStrA(String strA) { this.strA = strA; } public int getIntA() { return intA; } public void setIntA(int intA) { this.intA = intA; } /** * @return 创建并返回此对象的一个副本。 * @throws CloneNotSupportedException */ public Object clone() throws CloneNotSupportedException { //直接调用父类的clone()方法,返回克隆副本 return super.clone(); } }