包装包裹时出现空指针异常

时间:2014-06-08 00:22:17

标签: android nullpointerexception parcel

我刚收到第一份空指针异常的报告,对我来说毫无意义......

java.lang.NullPointerException
at com.kd7uiy.hamfinder.Subjects.DxccSubject.a(Unknown Source)
at com.kd7uiy.hamfinder.Subjects.AbstractSubject.writeToParcel(Unknown Source)
at android.os.Parcel.writeParcelable(Parcel.java:1254)
at android.os.Parcel.writeValue(Parcel.java:1173)
at android.os.Parcel.writeMapInternal(Parcel.java:591)
at android.os.Bundle.writeToParcel(Bundle.java:1627)
at android.os.Parcel.writeBundle(Parcel.java:605)
at com.kd7uiy.hamfinder.Broker.writeToParcel(Unknown Source)
at android.os.Parcel.writeParcelable(Parcel.java:1254)
at android.os.Parcel.writeValue(Parcel.java:1173)
at android.os.Parcel.writeMapInternal(Parcel.java:591)
at android.os.Bundle.writeToParcel(Bundle.java:1627)
at android.os.Parcel.writeBundle(Parcel.java:605)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2260)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3186)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5233)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
at dalvik.system.NativeStart.main(Native Method)

引用的功能是:

@Override
Bundle packageContents() {
    Bundle out = new Bundle();
    out.putInt("State", getState());
    return out;
}

请注意,NPE不在getState()中。怎么可能造成NPE?我唯一能想到的是,在调用函数的过程中,类实际上已经被破坏了,但这并没有多大意义。有什么想法吗?

只是为了它的乐趣,这是getState的规范。它是抽象主题的一部分,整个功能如下:

Type mState = null; //Defined at the class level

public Type getState() {
    return mState;
}

AbstractSubject是一个泛型类,在DxccSubject的情况下,类型是Integer。

1 个答案:

答案 0 :(得分:2)

这个解释似乎非常微不足道,所以我怀疑你没有想到它,但......

Bundle.putInt()收到 int 值。您的getState()泛型方法会为此类返回整数。在Java中,将null整数自动拆箱到int(或任何其他盒装基元,如Long,Float和& c)将抛出NullPointerException。可能是因为编译器只是用{{1}替换它}}

getState().intValue()被调用时,mState是否可能为空?