From 7a4196f5602a88a8c54dabd4eae52ab650c1684e Mon Sep 17 00:00:00 2001 From: Goooler Date: Mon, 25 Apr 2022 01:22:11 +0800 Subject: [PATCH] Add a deepCopy extension --- .../io/goooler/demoapp/base/util/BaseExtensions.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/base/src/main/kotlin/io/goooler/demoapp/base/util/BaseExtensions.kt b/base/src/main/kotlin/io/goooler/demoapp/base/util/BaseExtensions.kt index d6f4994fc..f5fa88883 100644 --- a/base/src/main/kotlin/io/goooler/demoapp/base/util/BaseExtensions.kt +++ b/base/src/main/kotlin/io/goooler/demoapp/base/util/BaseExtensions.kt @@ -16,6 +16,7 @@ import android.net.Uri import android.os.Build import android.os.Bundle import android.os.Looper +import android.os.Parcel import android.os.Parcelable import android.text.Spannable import android.text.Spanned @@ -82,6 +83,19 @@ inline val isMainThread: Boolean get() = Looper.getMainLooper() == Looper.myLoop fun unsafeLazy(initializer: () -> T): Lazy = lazy(LazyThreadSafetyMode.NONE, initializer) +fun T.deepClone(): T? { + var parcel: Parcel? = null + return try { + parcel = Parcel.obtain().also { + it.writeParcelable(this, 0) + it.setDataPosition(0) + } + parcel.readParcelable(this::class.java.classLoader) + } finally { + parcel?.recycle() + } +} + // ---------------------CharSequence-------------------------------// operator fun String.times(@IntRange(from = 0) num: Int): String {