cn.hutool.core.util.ObjectUtil.cloneByStream()方法的使用及代码示例

x33g5p2x  于2022-01-26 转载在 其他  
字(1.6k)|赞(0)|评价(0)|浏览(1191)

本文整理了Java中cn.hutool.core.util.ObjectUtil.cloneByStream()方法的一些代码示例,展示了ObjectUtil.cloneByStream()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ObjectUtil.cloneByStream()方法的具体详情如下:
包路径:cn.hutool.core.util.ObjectUtil
类名称:ObjectUtil
方法名:cloneByStream

ObjectUtil.cloneByStream介绍

[英]序列化后拷贝流的方式克隆
对象必须实现Serializable接口
[中]序列化后拷贝流的方式克隆
对象必须实现可序列化接口

代码示例

代码示例来源:origin: looly/hutool

/**
 * 克隆对象<br>
 * 如果对象实现Cloneable接口,调用其clone方法<br>
 * 如果实现Serializable接口,执行深度克隆<br>
 * 否则返回<code>null</code>
 * 
 * @param <T> 对象类型
 * @param obj 被克隆对象
 * @return 克隆后的对象
 */
public static <T> T clone(T obj) {
  T result = ArrayUtil.clone(obj);
  if (null == result) {
    if (obj instanceof Cloneable) {
      result = ReflectUtil.invoke(obj, "clone");
    } else {
      result = cloneByStream(obj);
    }
  }
  return result;
}

代码示例来源:origin: looly/hutool

/**
 * 克隆对象<br>
 * 如果对象实现Cloneable接口,调用其clone方法<br>
 * 如果实现Serializable接口,执行深度克隆<br>
 * 否则返回<code>null</code>
 * 
 * @param <T> 对象类型
 * @param obj 被克隆对象
 * @return 克隆后的对象
 */
public static <T> T clone(T obj) {
  T result = ArrayUtil.clone(obj);
  if (null == result) {
    if (obj instanceof Cloneable) {
      result = ReflectUtil.invoke(obj, "clone");
    } else {
      result = cloneByStream(obj);
    }
  }
  return result;
}

代码示例来源:origin: cn.hutool/hutool-all

/**
 * 克隆对象<br>
 * 如果对象实现Cloneable接口,调用其clone方法<br>
 * 如果实现Serializable接口,执行深度克隆<br>
 * 否则返回<code>null</code>
 * 
 * @param <T> 对象类型
 * @param obj 被克隆对象
 * @return 克隆后的对象
 */
public static <T> T clone(T obj) {
  T result = ArrayUtil.clone(obj);
  if (null == result) {
    if (obj instanceof Cloneable) {
      result = ReflectUtil.invoke(obj, "clone");
    } else {
      result = cloneByStream(obj);
    }
  }
  return result;
}

相关文章