当前位置:  开发笔记 > Android > 正文

Nulls可以传递给包裹吗?

如何解决《Nulls可以传递给包裹吗?》经验,为你挑选了1个好方法。

是否可以在null分配Parcel对象时写入,并在null再次取消对象时再次返回?

我们假设我们有以下代码:

public class Test implements Parcelable {
    private String string = null;
    public Test(Parcel dest, int flags) {
        source.writeString(string);
    }
}

使用NullPointerException时从包裹中读取此值是否会得到Parcel.readString()

或者我会得到一个null价值?



1> Richard Le M..:

是的,您可以传递nullParcel.writeString(String)方法.

再次阅读时Parcel.readString(),您将获得一个null价值.


例如,假设您有一个包含以下字段的类:

public class Test implements Parcelable {
    public final int id;
    private final String name;
    public final String description;
    ...

您可以Parcelable像这样创建实现(使用Android Studio autoparcelable工具):

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeInt(id);
    dest.writeString(null); // NOTE the null value here
    dest.writeString(description);
}

protected Test(Parcel in) {
    id = in.readInt();
    name = in.readString();
    description = in.readString();
}

运行此代码并将Test对象作为Parcelable extra 传递时Intent,2点变得明显:

    代码运行完美,没有任何NullPointerException

    反序列化的Test对象具有值name == null


您可以在对此相关问题的评论中看到类似的信息:

Parcel,ClassLoader和Reading Null值

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有