我尝试使用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
的正确方法,我该如何解决这个问题呢?
答案 0 :(得分:3)
您应该仔细阅读Parcelable javadoc。它包含您需要的一切。
正如文档中引用的那样:
可以写入和恢复其实例的类的接口 来自一个包裹。实现Parcelable接口的类也必须 有一个名为CREATOR的静态字段,它是一个实现的对象 Parcelable.Creator界面。
因此,您应该声明writeToParcel
方法,并使用将从包中生成类实例的创建者。
私有构造函数是一个额外的帮助程序,您可以使用它来设置给定宗地的对象字段的值,但不能设置对象本身。在Java中,this
是正确的值,无法分配。