「java对象字段复制」Java 复制对象
本篇文章给大家谈谈java对象字段复制,以及Java 复制对象对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java对象癿深复制和浅复制区别指什么???帮帮忙~~
- 2、java对象值的copy
- 3、java对象复制的问题
- 4、Java中,复制一个对象,有什么好的方法
- 5、java 如何复制一个对象?
- 6、如何复制一个java对象
Java对象癿深复制和浅复制区别指什么???帮帮忙~~
浅拷贝:仅复制引用,即两个引用指向同一个对象,如:
String aString = "hello";
String bString = aString;
深拷贝:复制对象的内容,Java里通过实现Clonnable并覆盖clone方法实现,具体深度由clone的实现决定,如:
public class People implements Clonnable{
private int age;
private String name;
public void setAge(int age){
this.age = age;
}
public int getAge(){
return this.age;
}
public void setName(String name){
this.name = name;
}
public String getAge(){
return this.name;
}
public Object clone(){
People people = new People();
people.setAge(this.age);
people.setName(this.name);
return people;
}
}
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela
java对象值的copy
让B成为A的子类,使用JAVA的反射机制,自己写一个子类拷贝父类的属性的函数,这样无论父类有几个属性都可以不用修改代码了。
参考一下:
java对象复制的问题
public class CloneNotSupportedExceptionextends Exception
当调用 Object 类中的 clone 方法复制对象,但该对象的类无法实现 Cloneable 接口时,抛出该异常。
重写 clone 方法的应用程序也可能抛出此异常,指示不能或不应复制一个对象。
以上引自java api 中文文档
因为楼主的test没有实现Cloneable接口..
Java中,复制一个对象,有什么好的方法
使用Java的反射机制实现:为了能更好的区分,写成了两个类,可以运行下面的代码看看效果
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) throws Exception {
Customer1 c1 = new Customer1();
c1.setName("c1");
ListString list = new ArrayListString();
list.add("1");
list.add("2");
c1.setList(list);
MapString,String map = new HashMapString, String();
map.put("map1", "map1");
map.put("map2", "map2");
c1.setMap(map);
Customer2 c2 = new Customer2();
//
Class c = c1.getClass();
Class class2 = c2.getClass();
Field fields[] = c.getDeclaredFields();
for (int i = 0; i fields.length; i++) {
Field field = fields[i];
String fieldName = field.getName();
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getMethodName = "get" + firstLetter + fieldName.substring(1);
String setMethodName = "set" + firstLetter + fieldName.substring(1);
Method getMethod = c.getMethod(getMethodName, new Class[] {});
Method setMethod = class2.getMethod(setMethodName,
new Class[] { field.getType() });
Object value = getMethod.invoke(c1, new Object[] {});
setMethod.invoke(c2, new Object[] { value });
}
System.out.println(c2.getName());
System.out.println(c2.getList());
System.out.println(c2.getMap());
}
}
class Customer1 {
private String name;
private ListString list;
private MapString, String map;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ListString getList() {
return list;
}
public void setList(ListString list) {
this.list = list;
}
public MapString, String getMap() {
return map;
}
public void setMap(MapString, String map) {
this.map = map;
}
}
class Customer2 {
private String name;
private ListString list;
private MapString, String map;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ListString getList() {
return list;
}
public void setList(ListString list) {
this.list = list;
}
public MapString, String getMap() {
return map;
}
public void setMap(MapString, String map) {
this.map = map;
}
}
java 如何复制一个对象?
给你个小例子
class test implents Cloneable
{
test t1 = new test();
test t2 = null;
try {
t2 = (test)t1.clone();
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
用clone()方法,不过在对象重载了Object的clone才能用。Object的clone方法是protected。
如何复制一个java对象
/**
* 复制对象
*
* @param srcObj
* @return
*/
public static Object depthClone(Object srcObj) {
if (srcObj == null) {
return null;
}
Object cloneObj = null;
ByteArrayOutputStream out = null;
ObjectOutputStream oo = null;
ByteArrayInputStream in = null;
ObjectInputStream oi = null;
try {
out = new ByteArrayOutputStream();
oo = new ObjectOutputStream(out);
oo.writeObject(srcObj);
in = new ByteArrayInputStream(out.toByteArray());
oi = new ObjectInputStream(in);
cloneObj = oi.readObject();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
if (oo != null) {
try {
oo.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
if (in != null) {
try {
in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
if (oi != null) {
try {
oi.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
return cloneObj;
}
关于java对象字段复制和Java 复制对象的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-08,除非注明,否则均为
原创文章,转载请注明出处。