JSON を使用する場合、Gson を使用して JSON データを型付きオブジェクトに変換するのが一般的です。ただし、解析する必要がある ArrayList 項目のタイプが実行時にリフレクションを使用して動的に決定されるシナリオが発生する可能性があります。このような場合、従来の TypeToken アプローチでは不十分である可能性があります。
たとえば、次のコードを考えてみましょう。
Type typeOfObjectsList = new TypeToken<ArrayList<myClass>>() {}.getType(); List<myClass> objectsList = new Gson().fromJson(json, typeOfObjectsList);
このコードは、JSON 文字列を myClass オブジェクトのリストに変換します。しかし、ArrayList の項目タイプを動的に決定する必要がある場合はどうすればよいでしょうか?
これを実現するには、Gson バージョン 2.8.0 で導入された新機能 TypeToken.getParameterized を利用できます。このメソッドを使用すると、指定されたパラメーター化された型で TypeToken を作成できます。
使用方法は次のとおりです。
private <T> Type setModelAndGetCorrespondingList2(Class<T> type) { Type typeOfObjectsListNew = TypeToken.getParameterized(ArrayList.class, type).getType(); return typeOfObjectsListNew; }
ArrayList クラスと動的項目型クラス type を引数として渡すことにより、 TypeToken.getParameterized に対して、目的の項目タイプを持つ ArrayList を表す TypeToken を作成します。この TypeToken を Gson.fromJson のパラメーターとして使用して、JSON データを目的のリスト タイプに正しく解析できます。
以上が実行時に動的 ArrayList 項目タイプで Gson TypeToken を使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。