writeParcelableArrayを使用 して、Parcelableを実装するオブジェクトの配列をParcelに書き込もうとしています。
私が書き込もうとしているオブジェクトは、(ご想像のとおり) 次のように定義されています。
public class Arrival implements Parcelable {
/* All the right stuff in here... this class compiles and acts fine. */
}
そして、私はそれらを「パーセル」に書き込もうとしています:
@Override
public void writeToParcel(Parcel dest, int flags) {
Arrival[] a;
/* some stuff to populate "a" */
dest.writeParcelableArray(a, 0);
}
Eclipse がこれをコンパイルしようとすると、エラーが発生します。
境界の不一致: タイプ Parcel のジェネリック メソッド writeParcelableArray(T[], int) は、引数 (Arrival[], int) には適用できません。推論されたタイプ Arrival は、境界付きパラメーターの有効な代替ではありません < T extends Parcelable >
このエラー メッセージがまったくわかりません。Parcelable
はインターフェイス (クラスではない) であるため、拡張できません。誰にもアイデアはありますか?
更新:ArrayList
ofParcelable
をIntent
:に入れるときに、基本的に同じ問題が発生しています。
Intent i = new Intent();
i.putParcelableArrayListExtra("locations", (ArrayList<Location>) locations);
収量:
Intent 型の putParcelableArrayListExtra(String, ArrayList< ? extends Parcelable >) メソッドは、引数 (String, ArrayList< Location >) には適用されません。
これLocation
は、私が上で取り組んでいたクラス ( Arrival
s をラップする) が原因である可能性がありますが、そうではないと思います。