首页 > 代码库 > JAVA对象任意深度克隆clone工具类分享
JAVA对象任意深度克隆clone工具类分享
原文:JAVA对象任意深度克隆clone工具类分享
源代码下载地址:http://www.zuidaima.com/share/1550463408114688.htm
JAVA对象任意深度克隆clone工具类分享
package com.zuidaima.n_app.util; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Modifier; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Map; import java.util.Set; /** * 克隆工具类 * @author lujijiang@gmail.com www.zuidaima.com * */ public class Clone { /** * 无需进行复制的特殊类型数组 */ static Class[] needlessCloneClasses = new Class[]{String.class,Boolean.class,Character.class,Byte.class,Short.class, Integer.class,Long.class,Float.class,Double.class,Void.class,Object.class,Class.class }; /** * 判断该类型对象是否无需复制 * @param c 指定类型 * @return 如果不需要复制则返回真,否则返回假 */ private static boolean isNeedlessClone(Class c){ if(c.isPrimitive()){//基本类型 return true; } for(Class tmp:needlessCloneClasses){//是否在无需复制类型数组里 if(c.equals(tmp)){ return true; } } return false; } /** * 尝试创建新对象 * @param c 原始对象 * @return 新的对象 * @throws IllegalAccessException */ private static Object createObject(Object value) throws IllegalAccessException{ try { return value.getClass().newInstance(); } catch (InstantiationException e) { return null; } catch (IllegalAccessException e) { throw e; } } /** * 复制对象数据 * @param value 原始对象 * @param level 复制深度。小于0为无限深度,即将深入到最基本类型和Object类级别的数据复制; * 大于0则按照其值复制到指定深度的数据,等于0则直接返回对象本身而不进行任何复制行为。 * @return 返回复制后的对象 * @throws IllegalAccessException * @throws InstantiationException * @throws InvocationTargetException * @throws NoSuchMethodException */ public static Object clone(Object value,int level) throws IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException{ if(value=http://www.mamicode.com/=null){ >
JAVA对象任意深度克隆clone工具类分享
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。