10

我正在实现 Parcelable 以便在整个 Intent 中传输一些简单的数据。
但是, Parcelable 接口中有一种我根本不理解的方法:newArray()
它没有任何相关文档,甚至在我打包/拆包我的对象时也没有在我的代码中调用。

示例 Parcelable 实现:

public class MyParcelable implements Parcelable {
 private int mData;

 public int describeContents() {
     return 0;
     }

 public void writeToParcel(Parcel out, int flags) {
     out.writeInt(mData);
     }

 public static final Parcelable.Creator<MyParcelable> CREATOR
         = new Parcelable.Creator<MyParcelable>() {
     public MyParcelable createFromParcel(Parcel in) {
         return new MyParcelable(in);
         }

     public MyParcelable[] newArray(int size) {
         return new MyParcelable[size];
         }
     };

 private MyParcelable(Parcel in) {
     mData = in.readInt();
     }
 }  

所以,我的问题是:这个方法有什么用?什么时候叫它?除了那种方法
之外,做其他事情还有什么意义吗?return new MyParcelable[size];

4

3 回答 3

9

这是当您尝试反序列化对象数组Parcelable并为每个单个对象调用时调用的函数createFromParcel

于 2014-02-26T10:10:06.093 回答
5

它可以在没有所有泛型的情况下准备类型化数组。而已。
只返回标准return new MyParcelable[size];就可以了。

这是正常的,你永远不会自己打电话。但是,通过调用像Bundle.getParcelableArray()你这样的东西间接地使用这个方法。

于 2014-02-26T10:09:16.093 回答
0

newArray 负责创建我们类型的适当大小的数组

于 2018-09-09T18:43:26.357 回答