【发布时间】:2011-08-19 19:00:43
【问题描述】:
关于我的代码示例,如果一个 Locable 的变量为空,我该怎么办?例如,现在如果 l.getZoom() 返回 null,我得到 NullPointerException。
@Override
public void writeToParcel(Parcel parcel, int arg1) {
parcel.writeInt(count);
for(Locable l:locableArr){
parcel.writeInt(l.getOriginId());
parcel.writeInt(l.getLocableType());
parcel.writeInt(l.getZoom());
parcel.writeDouble(l.getLatituda());
parcel.writeDouble(l.getLongituda());
parcel.writeString(l.getTitle());
parcel.writeString(l.getSnipet());
}
}
谢谢!
【问题讨论】:
-
似乎 NPE 是自动拆箱的结果。也许我应该只检查空值并将其设置为 0?
-
如果 zoom 的值为 0+,考虑将 null 表示为 -1
-
现在我正在做类似的事情,如果值为 NULL,我正在写一些值,例如 -1 或我在反序列化设置为 NULL 期间的空字符串。丑陋...如果有人能确认这是正确的方法,我会更满意我的代码。
-
以及原语没有 null 的概念(或目标 C 的 nil)作为一个通用解决方案,我想知道您是否可以发送成对的原语来表示一个对象,比如 Int 代表 int,首先是布尔 isNull,然后是原始 int 允许您创建 Integer(int) 或 Integer(null)。
标签: android nullpointerexception parcelable