2017-06-12 18 views
0
  1. Androidでサードパーティの地図を取得するための外部ライブラリを使用しています。
  2. 私はIntentを渡したいクラスがありますので、実装するにはParcelableとします。
  3. しかし、このクラスは外部ライブラリからのものです。

この場合、どうすればよいですか?私が何をしたか外部ライブラリからクラスにParcelableインターフェイスを追加する

た:

  1. 私は図書館のネットワーク要求から、これらすべてのAクラスのインスタンスを取得するときに、このクラスを拡張するカスタムクラスを作成します(私はAそれを呼びましょう)とParcelable
  2. を実装しかし、親クラスから子クラスにキャストしているので、カスタムクラスオブジェクトにキャストできないことが分かりました。
  3. 私は、Aクラスのメンバ変数を新しくインスタンス化されたカスタムオブジェクトのメンバ変数にコピーできる静的メソッドを追加しました。これは文字通り外部ライブラリクラスAをカスタムクラスに変換します。
  4. 動作しますが、コードの匂いのようです。これをどのように改善できますか?それともコードのにおいではありませんか?
+0

(ただし、ライブラリのネットワークリクエストからこれらのAクラスインスタンスをすべて取得すると、カスタムクラスオブジェクトにキャストすることができないことがわかりました。これは、親クラスから子クラスにキャストしているためです) Javaであなたは試しましたか? –

+2

@ user7790438確かに、あなたが 'A a = new A();と言ってみましょう。 B b =(B)a; '(bがAの子クラスである場合)、ダウンキャストは機能しません。これは 'A a = new B(); B b =(B)a;私は 'A'クラスのインスタンス化段階を制御することはできません。ライブラリはコールバックとしてネットワークリクエストの後、 'ArrayList 'の形で私に渡しました。 – viz

+1

あなたはあなたがしたものよりも選択肢がありません。 –

答えて

0

あなたがアンドロイドで使用するpojoは理想的にはパーセル可能です。 そうでない場合、あなたがやったやり方は別のものであり、コードの匂いではありません。 Chill

関連する問題