0
- Androidでサードパーティの地図を取得するための外部ライブラリを使用しています。
- 私はIntentを渡したいクラスがありますので、実装するには
Parcelable
とします。 - しかし、このクラスは外部ライブラリからのものです。
この場合、どうすればよいですか?私が何をしたか外部ライブラリからクラスにParcelableインターフェイスを追加する
た:
- 私は図書館のネットワーク要求から、これらすべての
A
クラスのインスタンスを取得するときに、このクラスを拡張するカスタムクラスを作成します(私はA
それを呼びましょう)とParcelable - を実装しかし、親クラスから子クラスにキャストしているので、カスタムクラスオブジェクトにキャストできないことが分かりました。
- 私は、
A
クラスのメンバ変数を新しくインスタンス化されたカスタムオブジェクトのメンバ変数にコピーできる静的メソッドを追加しました。これは文字通り外部ライブラリクラスA
をカスタムクラスに変換します。 - 動作しますが、コードの匂いのようです。これをどのように改善できますか?それともコードのにおいではありませんか?
(ただし、ライブラリのネットワークリクエストからこれらのAクラスインスタンスをすべて取得すると、カスタムクラスオブジェクトにキャストすることができないことがわかりました。これは、親クラスから子クラスにキャストしているためです) Javaであなたは試しましたか? –
@ user7790438確かに、あなたが 'A a = new A();と言ってみましょう。 B b =(B)a; '(bがAの子クラスである場合)、ダウンキャストは機能しません。これは 'A a = new B(); B b =(B)a;私は 'A'クラスのインスタンス化段階を制御することはできません。ライブラリはコールバックとしてネットワークリクエストの後、 'ArrayList 'の形で私に渡しました。 – viz
あなたはあなたがしたものよりも選択肢がありません。 –