Kotlin 序列化Parcelable/Serializable

简介: Kotlin 序列化Parcelable/Serializable

开发中,序列化是常见操作,在java中,我们一般会用到Serializable或者Parcelable,优缺点就不赘述了,今天来看看kotlin中的序列化。

Parcelable

1.添加配置

app目录下的build.gradle文件


android {
    ...
    androidExtensions {
        experimental = true
    }
}


2.添加注解并实现Parcelable

@Parcelize

data class User(val name: String) : Parcelable


以上就完成了序列化。就这么简单。



3.泛型序列化

我们在实际开发中经常会对bean对象做抽取,这里就涉及到了泛型序列化。


@Parcelize

data class BaseBean<T : Parcelable>(
    val errorMsg: String,
    val errorCode: Int,
    val data: T
) : Parcelable



这里需要注意的是泛型也要实现Parcelable,即<T : Parcelable> 。



Parcelable源码

public interface Parcelable {
    int CONTENTS_FILE_DESCRIPTOR = 1;
    int PARCELABLE_WRITE_RETURN_VALUE = 1;
    int describeContents();
    void writeToParcel(Parcel var1, int var2);
    public interface Creator<T> {
        T createFromParcel(Parcel var1);
        T[] newArray(int var1);
    }
    public interface ClassLoaderCreator<T> extends Parcelable.Creator<T> {
        T createFromParcel(Parcel var1, ClassLoader var2);
    }
}



可以看到还是有writeToParcel方法和Creator等,其实也没少,只是不再需要我们去写了。


Serializable

Serializable的方式比较简单,直接实现Serializable就可以了


data class User( 
    val id: Int,
    val name: String
) : Serializable


目录
相关文章
|
5月前
|
存储 安全 Java
揭秘Java序列化神器Serializable:一键解锁对象穿越时空的超能力,你的数据旅行不再受限,震撼登场!
【8月更文挑战第4天】Serializable是Java中的魔术钥匙,开启对象穿越时空的能力。作为序列化的核心,它让复杂对象的复制与传输变得简单。通过实现此接口,对象能被序列化成字节流,实现本地存储或网络传输,再通过反序列化恢复原状。尽管使用方便,但序列化过程耗时且存在安全风险,需谨慎使用。
57 7
|
NoSQL Java Redis
[已解决]报异常java.io.InvalidClassException的解决方法|对象序列化实现Serializable会出现java.io.InvalidClassException的异常
[已解决]报异常java.io.InvalidClassException的解决方法|对象序列化实现Serializable会出现java.io.InvalidClassException的异常
|
8月前
|
存储 Java 开发工具
[Android]序列化原理Parcelable
[Android]序列化原理Parcelable
141 0
|
8月前
|
存储 Java Android开发
[Android]序列化原理Serializable
[Android]序列化原理Serializable
102 0
|
存储 Java
Java 核心技术之序列化 Serializable
一、序列化概念 将对象在内存中的状态保存下来,在需要的时候获取。 序列化:将对象转换为字节序列,以便在网络传输或存储。 反序列化:将字节序列转换为对象。
292 0
|
JSON Java 数据库连接
87. Java序列化和反序列化为什么要实现Serializable接口
87. Java序列化和反序列化为什么要实现Serializable接口
206 0
|
JSON Java 数据库连接
面试官问:Java 序列化和反序列化为什么要实现 Serializable 接口?什么鬼??
面试官问:Java 序列化和反序列化为什么要实现 Serializable 接口?什么鬼??
253 0
|
Java
Java - 序列化和反序列化为什么要实现Serializable接口?(二)
Java - 序列化和反序列化为什么要实现Serializable接口?(二)
121 0
|
JSON Java 数据库连接
Java - 序列化和反序列化为什么要实现Serializable接口?(一)
Java - 序列化和反序列化为什么要实现Serializable接口?(一)
180 0
|
2月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。