1 package leakcanary.internal 2 3 import shark.SharkLog 4 import java.io.ByteArrayInputStream 5 import java.io.ByteArrayOutputStream 6 import java.io.ObjectInputStream 7 import java.io.ObjectOutputStream 8 import java.io.Serializable 9 toByteArraynull10internal fun Serializable.toByteArray(): ByteArray { 11 val outputStream = ByteArrayOutputStream() 12 ObjectOutputStream(outputStream).writeObject(this) 13 return outputStream.toByteArray() 14 } 15 16 internal object Serializables { 17 fromByteArraynull18 inline fun <reified T> fromByteArray(byteArray: ByteArray): T? { 19 val inputStream = ByteArrayInputStream(byteArray) 20 return try { 21 ObjectInputStream(inputStream).readObject() as? T 22 } catch (ignored: Throwable) { 23 SharkLog.d(ignored) { "Could not deserialize bytes, ignoring" } 24 null 25 } 26 } 27 }