android变量要不要附空值,android-如何在使用Parcelable时序列化空值

我见过的大多数序列化代码都使用两个标志来指示值的存在/不存在,或者在值前加上一个计数字段(例如,在编写数组时),如果该值不等于,则计数字段仅设置为零。 根本不存在。

检查Android核心类的源代码会发现以下代码(来自Message类):

if (obj != null) {

try {

Parcelable p = (Parcelable)obj;

dest.writeInt(1);

dest.writeParcelable(p, flags);

} catch (ClassCastException e) {

throw new RuntimeException(

"Can't marshal non-Parcelable objects across processes.");

}

} else {

dest.writeInt(0);

}

或这个(来自Intent类):

if (mCategories != null) {

out.writeInt(mCategories.size());

for (String category : mCategories) {

out.writeString(category);

}

} else {

out.writeInt(0);

}

我的建议:在您的代码中,如果“ zoom == null”和“ zoom == 0”之间没有功能上的区别,那么我只需要将zoom声明为原始变量(int而不是Integer),或者将其初始化为零 构造函数,并确保您永远不要将其设置为null(这样就可以保证它永远不会为null,并且您不必在序列化/反序列化方法中添加特殊代码来处理它)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值