Jalena Blog

  • 首页
  • 程序开发
    • Java
    • Spring
    • SpringBoot
    • SpringMvc
    • Python
    • Odoo
    • C#
    • SQL
    • Web
    • Linux
  • 移动设备
    • Android
    • Router
  • 杂七杂八
    • 我的废话
    • 音频
    • 视频
    • 常用软件
  • 关于
  1. 首页
  2. 软件开发
  3. Java
  4. 正文

Android 深度拷贝

2024-07-03

Android开发中,序列化,反序列化的使用是非常平凡的。通常使用JSON的序列化特性来做,但也可以使用Parcelable接口的特性来实现!

public class CloneUtils {

	private static final Gson gson = new GsonBuilder().registerTypeAdapter(Integer.class, new SapIntegerDeserializer())
			.registerTypeAdapter(Double.class, new SapDoubleDeserializer())
			.create();

	/**
	 * 使用Gson进行对象的深度克隆
	 *
	 * @param source 要克隆的对象
	 * @param clazz  对象的类型
	 * @param <T>    泛型类型
	 * @return 克隆后的新对象
	 */
	public static <T> T deepClone(T source, Class<T> clazz) {
		String json = gson.toJson(source);
		return gson.fromJson(json, clazz);
	}

	/**
	 * 深度拷贝
	 *
	 * @param original 原始对象
	 * @param <T>      泛型
	 * @return 克隆对象
	 */
	public static <T extends Parcelable> T deepCopy(T original) {
		if (null == original) {
			return null;
		}
		Parcel parcel = Parcel.obtain();

		try {
			parcel.writeParcelable(original, 0);
			parcel.setDataPosition(0);
			return parcel.readParcelable(original.getClass()
					.getClassLoader());
		} finally {
			parcel.recycle();
		}
	}

	/**
	 * 深度拷贝
	 *
	 * @param original 需拷贝的原始集合
	 * @param <T>      泛型
	 * @return 克隆对象
	 */
	public static <T extends Parcelable> List<T> deepCopy(List<T> original) {
		if (null == original) {
			return null;
		}

		return original.stream()
				.map(CloneUtils::deepCopy)
				.collect(Collectors.toList());
	}
}
标签: java
最后更新:2024-07-03

Jalena

原创内容,转载请注明出处! 部分内容来自网络,请遵守法律适用!

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

【腾讯云】云服务器特惠热卖中
标签聚合
java Centos odoo 其他 生活 wordpress docker MySql
分类
  • Android / 4篇
  • C# / 10篇
  • Codec / 9篇
  • Conversion / 14篇
  • Editing / 16篇
  • Java / 47篇
  • Javascript / 3篇
  • Linux / 30篇
  • Odoo / 25篇
  • Python / 6篇
  • SQL / 30篇
  • Web / 3篇
  • Windows / 4篇
  • 我的日记 / 10篇
  • 杂七杂八 / 93篇
  • 软件开发 / 72篇
  • 非线性编辑 / 1篇

COPYRIGHT © 2026 Jalena Blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备17025376号