5

我正在尝试使用 Gson 实现 parcelable 接口。这个想法是创建一个 json 字符串(使用 gson)并将其写入 parcel 对象。

这可能是实现接口的正确方法吗?

我遇到的唯一问题是反序列化对象时。实际上,我使用 gson 来重新创建对象。

private MyClass(Parcel in) {
    String json = in.readString();
    Gson gson = new Gson();
    gson.fromJson(json, getClass());
}

问题是该fromJson函数返回一个对象,该对象是构造函数应该创建的对象。最后一行代码应该类似于

this=gson.fromJson(json, getClass());

那么,如果这是一种正确的实施方式Parcelable,我该如何解决这个问题?

4

1 回答 1

3

您应该更仔细地阅读Parcelable javadoc。它包含您需要的一切。

正如文档中所引用的:

可以将实例写入 Parcel 和从 Parcel 恢复的类的接口。实现 Parcelable 接口的类还必须有一个名为 CREATOR 的静态字段,它是一个实现 Parcelable.Creator 接口的对象。

因此,您应该writeToParcel声明该方法,并使用一个创建者,该创建者将从 Parcel 生成您的类的实例。

私有构造函数是一个额外的帮助器,您可以使用它来设置给定地块的对象的字段值,但不能设置对象本身。在 Java 中,this是一个正确的值,不能赋值。

顺便说一句,parcelisation 的目标是提供一个短期的快速序列化过程。一般来说,在使用宗地化时,您应该使用快速且紧凑的数据格式。JSON 不是首选候选者,但它会起作用。

于 2013-11-10T14:14:24.253 回答