资讯详情

资讯详情

建站行业动态 · 设计趋势 · 数字化升级干货

auto-value-parcel支持哪些类型?10大类Parcelable数据类型完整清单

auto-value-parcel支持哪些类型?10大类Parcelable数据类型完整清单 auto-value-parcel支持哪些类型10大类Parcelable数据类型完整清单【免费下载链接】auto-value-parcelAn Android Parcelable extension for Googles AutoValue.项目地址: https://gitcode.com/gh_mirrors/au/auto-value-parcel在 Android 开发中auto-value-parcel是一个为 Google AutoValue 打造的 Parcelable 扩展库它通过注解处理器让所有标注了AutoValue的类在实现Parcelable时自动生成序列化代码无需手写writeToParcel()和CREATOR。很多新手最关心的问题就是auto-value-parcel 支持哪些类型这篇清单将按源码逐一梳理它默认支持的 10 大类 Parcelable 数据类型帮你快速判断自己的模型类能否直接使用。一、auto-value-parcel 是什么简单说你只需要把AutoValue类和Parcelable写在一起构建时该扩展就会自动补齐序列化逻辑AutoValue public abstract class Foo implements Parcelable { public abstract String bar(); }编译后即可直接使用 Parcelable 的 Foo。它的类型支持逻辑集中在源码文件auto-value-parcel/src/main/java/com/ryanharter/auto/value/parcel/Parcelables.java中下面 10 大类全部出自这份代码的读写分支保证准确可靠。二、10 大类 Parcelable 数据类型完整清单1. 八大基本数据类型与包装类最基础的一类所有 Java 基本类型都开箱即用boolean、byte、short、int、long、float、double、char对应的包装类Boolean、Integer等也完全支持。这是 Android 传递数据最常用的基础类型也是 auto-value-parcel 默认支持类型的起点。2. String 与 CharSequence文本类型全覆盖String直接调用readString()/writeString()CharSequence则借助TextUtils完成读写。无论是普通字符串还是 Spannable 等文本序列都能轻松序列化。3. 数组家族8 种数组一次说清数组是高频数据类型包括boolean[]、byte[]、char[]、int[]、long[]五种基本类型数组String[]字符串数组Parcelable[]可序列化对象数组Object[]通用对象数组对应createBooleanArray()、createByteArray()、readStringArray()、readParcelableArray()等标准 API全部原生支持。4. List 列表集合传递列表数据最常用List及其实现类如ArrayList可直接读写使用readArrayList()/writeList()完成。这是跨组件传递一组对象时最常用的类型之一。5. Map 映射集合键值对序列化Map也受支持但有一个重要限制键必须是 String值必须是 Parcelable 类型。这个约束在Parcelables.java的isValidMap()方法中有明确校验使用时注意泛型写法即可。6. Guava 不可变集合Immutable 系列专属支持ImmutableCollection如ImmutableList、ImmutableSet和ImmutableMap同样受支持序列化时通过copyOf()重建不可变集合保证数据不可变特性在传输前后保持一致。7. Parcelable 对象嵌套序列化的核心任何实现了Parcelable接口的自定义类都可以作为属性通过writeParcelable()/readParcelable()完成嵌套序列化。这也是它名字里 Parcel 的由来——支持对象间的任意组合。8. Android 容器类SparseArray 与 Bundle 家族SparseArray、SparseBooleanArrayAndroid 特有的稀疏数组容器Bundle、PersistableBundle数据传递的万能包裹这些类型在跨 Activity / Fragment 传值时非常常见全部无需额外配置。9. Serializable 序列化对象Java 传统方案兼容实现了java.io.Serializable接口的对象也直接支持通过writeSerializable()/readSerializable()处理。虽然性能不如 Parcelable但兼容老代码很方便。10. 特殊类型Size、SizeF、Enum 与 IBinder最后一类涵盖几个小而美的专属类型Size、SizeFAndroid 尺寸对象图片、View 测量常用Enum枚举类型通过序列化名称字符串实现IBinderBinder 句柄跨进程场景会用到三、不在清单里的类型怎么办用 TypeAdapter 扩展如果你的属性类型不在上述 10 大类中比如Date、ArrayMap等auto-value-parcel 提供了扩展机制自定义一个TypeAdapter再用ParcelAdapter注解标记属性即可。相关接口定义在adapter/src/main/java/com/ryanharter/auto/value/parcel/TypeAdapter.java中配合ParcelAdapter.java注解使用就能为任意类型定制序列化逻辑。四、10 大类支持类型速查表类别代表类型基本类型与包装类boolean、int、long、float 等 16 种文本类型String、CharSequence数组家族boolean[]、byte[]、int[]、String[]、Parcelable[] 等 8 种列表集合List、ArrayList映射集合MapString 键 Parcelable 值Guava 集合ImmutableList、ImmutableMap 等Parcelable 对象任意实现 Parcelable 的类Android 容器SparseArray、Bundle、PersistableBundleSerializable任意实现 Serializable 的类特殊类型Size、SizeF、Enum、IBinder总结以上就是 auto-value-parcel 默认支持的 10 大类 Parcelable 数据类型完整清单覆盖了 Android 日常开发 90% 以上的场景。上手时只需对照清单确认属性类型超出范围再考虑 TypeAdapter 自定义方案就能让 AutoValue 模型类轻松获得 Parcelable 能力省去大量模板代码。【免费下载链接】auto-value-parcelAn Android Parcelable extension for Googles AutoValue.项目地址: https://gitcode.com/gh_mirrors/au/auto-value-parcel创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关资讯