Kotlin Parcelable @Parcelize 知识总结

  • Kotlin 1.4.20 及以后
//独立插件
apply plugin: 'kotlin-parcelize'
  • Kotlin 1.3.60 及以后
//扩展插件 包括 @Parcelize 和 kotlinx.android.synthetic(替代findViewById)
apply plugin: 'kotlin-android-extensions'
//如果只想启用扩展插件里的 parcelize 功能
androidExtensions {
    features = ["parcelize"]
}
  • Kotlin 旧版本
//扩展插件 包括 @Parcelize 和 kotlinx.android.synthetic(替代findViewById)
apply plugin: 'kotlin-android-extensions'
//如果只想启用扩展插件里的 parcelize 功能
androidExtensions {
    features = ["parcelize"]
}
//需要启用实验室功能
androidExtensions {
    experimental  = true
}
Kotlin 中的 @Parcelize 注解是用于简化实现 `android.os.Parcelable` 接口的工具。该注解告诉 Kotlin 编译器要自动生成 `android.os.Parcelable` 的 `writeToParcel()`、`describeContents()` 等方法,以及生成一个构建器 `CREATOR` [^3]。 在 Android 开发中,当需要在组件(如 Activity、Service 等)之间传递自定义对象时,通常要让该对象实现 `Parcelable` 接口,以此实现对象的序列化和反序列化。传统上,实现 `Parcelable` 接口需手动编写大量模板代码,例如 `writeToParcel()` 方法用于将对象的属性写入 `Parcel`,`createFromParcel()` 方法用于从 `Parcel` 中恢复对象的属性。使用 @Parcelize 注解后,这些模板代码会由编译器自动生成,从而显著减少手动编写的代码量,提高开发效率 [^3][^4]。 要使用 @Parcelize 注解,需要满足以下条件: 1. 确保项目中添加了必要的依赖项,在 `build.gradle` 文件中添加 `kotlin-parcelize` 插件,如 `apply plugin: 'kotlin-parcelize'` 或者使用 `plugins { id 'kotlin-parcelize' }` [^1]。 2. 在 Kotlin 数据类上添加 @Parcelize 注解,并实现 `Parcelable` 接口。例如: ```kotlin import android.os.Parcelable import kotlinx.parcelize.Parcelize @Parcelize data class User( val id: Int, val name: String, val email: String ) : Parcelable ``` 3. 在 `build.gradle` 文件中启用 Parcelize 功能,设置 `kotlinOptions` 的 `jvmTarget` 为 `'1.8'` [^1]。 需要注意的是,@Parcelize 注解只能在直接或间接实现了 `android.os.Parcelable` 的类中使用,并且只有原始的构造属性才会被序列化 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

louisgeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值