ホームページ >Java >&#&チュートリアル >実行時に動的 ArrayList 項目タイプで Gson TypeToken を使用する方法は?

実行時に動的 ArrayList 項目タイプで Gson TypeToken を使用する方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-05 17:16:11359ブラウズ

How to Use Gson TypeToken with Dynamic ArrayList Item Types at Runtime?

実行時に動的 ArrayList 項目型を使用した Gson TypeToken

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。