当前位置: 首页 > news >正文

专业的网站制作设计宁波哪里做网站

专业的网站制作设计,宁波哪里做网站,宁波人流多少钱,wordpress 附件外置一、介绍 注解序列化篇:Android kotlin序列化之Parcelize详解与使用_蜗牛、Z的博客-CSDN博客 通过上一篇注解序列化,我们已了解的kotlin的序列化比Java复杂了很多。而且有好多问题,注解虽好,但是存在一些问题。 一般在大型商业…

一、介绍

注解序列化篇:Android kotlin序列化之@Parcelize详解与使用_蜗牛、Z的博客-CSDN博客

通过上一篇注解序列化,我们已了解的kotlin的序列化比Java复杂了很多。而且有好多问题,注解虽好,但是存在一些问题。

一般在大型商业项目开发过程中,我们不仅追求极致的开发技术,更重视软件质量。过于风骚的技术同样有潜在的风险,这个时候我们还是回到本质。

二、手写Parcelable序列化

这边直接上代码:

class Car(var logo:String?="") :Parcelable{var name:String?=""var numbe:Int=0constructor(parcel: Parcel) : this(parcel.readString()) {name = parcel.readString()numbe = parcel.readInt()}override fun writeToParcel(parcel: Parcel, flags: Int) {parcel.writeString(logo)parcel.writeString(name)parcel.writeInt(numbe)}override fun describeContents(): Int {return 0}companion object CREATOR : Parcelable.Creator<Car> {override fun createFromParcel(parcel: Parcel): Car {return Car(parcel)}override fun newArray(size: Int): Array<Car?> {return arrayOfNulls(size)}}}

只要继承Parcelable,IDE可以自动完成,接下来就是测试。

关于CREATOR 写法有两种

1、第一种

companion object CREATOR : Parcelable.Creator<Car> {override fun createFromParcel(parcel: Parcel): Car {return Car(parcel)}override fun newArray(size: Int): Array<Car?> {return arrayOfNulls(size)}}

2、第二种

    companion object {@JvmFieldval CREATOR = object : Parcelable.Creator<Car> {override fun createFromParcel(parcel: Parcel): Car {return Car(parcel)}override fun newArray(size: Int): Array<Car?> {return arrayOfNulls(size)}}}

如果你的类中需要有其他方法加入伴生对象中,当前采用第一种无法扩展,因为一个类中只能有一个伴生对象,所以建议第二种写法。

三、复杂类序列化

简单类很好处理,即使使用注解也能完成,但是复杂对象的封装,注解存在问题。这就是我们为什么用原生继承写法。

Demo:

class TestCar() :Parcelable{var car:Car?=nullvar list= mutableListOf<Car>()constructor(parcel: Parcel) : this() {car = parcel.readParcelable(Car::class.java.classLoader)parcel.readTypedList(list,Car.CREATOR)}@RequiresApi(Build.VERSION_CODES.Q)override fun writeToParcel(parcel: Parcel, flags: Int) {parcel.writeParcelable(car, flags)parcel.writeTypedList(list)}override fun describeContents(): Int {return 0}companion object CREATOR : Parcelable.Creator<TestCar> {override fun createFromParcel(parcel: Parcel): TestCar {return TestCar(parcel)}override fun newArray(size: Int): Array<TestCar?> {return arrayOfNulls(size)}}}

这样我们就完成了复杂的对象封装。

注意:

不要将注解类和非注解对象混合在一起使用。这样如果涉及到对象A是对象B的变量,那么序列化对象B还是会出现异常。

复杂对象测试

 

简单对象

 

四、 总结

        通过原生手写和注解两种对比,我还是建议大家不要通过注解去完成,因为出现问题无法排查,浪费时间。特别是新手,很容易被绕进去,找不到问题。

不要使用注解,不要使用注解,不要使用注解。重要事情说三遍

http://www.yayakq.cn/news/800357/

相关文章:

  • 网站建设后如何修改客户端建站
  • 美橙网站太原建站模板厂家
  • 广州网站建设有限公司网页游戏如何制作
  • 教育网站建设开发北京的互联网公司有哪些
  • 做网站闵行网站主页制作教程
  • 现代网站建设江苏省建设工程招标网站
  • 清晰化网站宝塔面板建设二级域名网站访问不了
  • 大兴网站建设价格网页广告怎么关闭
  • 微信嵌入网站开发模板网站制作多少钱
  • 重庆本地生活网宁波关键词排名优化平台
  • 免费建站资源wordpress如何上线
  • 网站开发网页设计游戏设计泉州seo技术
  • 广州新建站哈尔滨网站建设网络优化
  • 凤城网站建设网站空间的建设
  • 网站备案图标怎么添加google网址直接打开
  • 网站建设招标范文哪个网站能找到做夜场的女孩
  • 户外保险网站tp5企业网站开发百度云
  • 做网站要收订金吗浙江网站建设方案
  • 神马网站可以做兼职广州站扩建
  • c 做网站遂宁建设网站
  • 江西城乡住房建设网站网站订单模板
  • 东莞最好的网站建设价格网站改版 英文
  • 设计网站页面要注意什么百度网站快速收录
  • 对网站建设展望怎么创建网站免费的
  • 做影视网站需要多少钱市场调研问卷调查怎么做
  • 网站建设实习业务介绍wordpress 中文付费主题
  • 做效果图的网站中国平面设计网站
  • 有高并发,高访问量网站开发建设银行嘉兴分行网站首页
  • phpstudy 做网站哪个网站做ic外单好
  • 网站的建设项目是什么专业全网推广建站公司