文章标题所列出的几个东西可能没有很大的联系,只是为了记录自己学到的东西
一、Serializable序列化
它是一个接口,只是一个记号,用来标记类,告诉序列化的程序该类是可以序列化的。
未完...
二、@Expose
该注解来源于com.google.gson.annotation,是序列化对象成为json时的一个设定
@Expose有两个属性值
-
serializable 设置该域是否可序列化,true/false
-
deserializable 设置该域是否可以反序列化, true/false
一般用于序列化成json时,舍去不需要的域(serializable=false)
三、@Embeddable、@Embedded
- @Embeddable是用来注解Java类的,表示该类是可嵌套的,可以在其他类的域中定义
- @Embedded是用来注解Java类的属性的,表示该属性来自于一个嵌套(@Embeddable)类
四、延迟加载(kotlin语法)
在kotlin中,一般情况是,定义变量的同时一定要赋值,因为kotlin不接受null空指针。
那如果我想在定义的时候不赋值,有什么解决办法呢?
答案就是lateinit修饰符和by lazy修饰符
这两个修饰符都能够达到预期的效果,但也有区别
- lateinit:只修饰var可变类型,在定义的时候会被赋值为null,随时都可以初始化和赋值。
- by lazy:之修饰val不可变类型,意味着它只能初始化一次。
注意:基本的数据类型不能参与这两种修饰