2016-12-16 3 views
0

GoogleのGSONfromJsonメソッドのTypeTokenを理解できません。 new TypeToken<List<ID_Name_Address>>(){}.getType()google gson fromjson()TypeToken

はこれが匿名クラスである:コードの下には、正確に、ここで何が起こっている

 Gson gson = new Gson(); 
     ArrayList<ID_Name_Address> al = new ArrayList<ID_Name_Address>(); 
     al = gson.fromJson(json, new TypeToken<List<ID_Name_Address>>(){}.getType()); 

...私のために理解することは非常に複雑なのですか?このコードにいくつかの光を投げてください。

答えて

2

TypeTokenは、完全に指定された汎用スーパークラスを持つクラスがそのデータをリフレクションで利用できるようにするため、実行時のジェネリックに関する情報を得るのは難しいことです。

GSONのユーザーガイドがここでジェネリックをデシリアライズ/シリアライズのセクションがあります。https://github.com/google/gson/blob/master/UserGuide.md#TOC-Serializing-and-Deserializing-Generic-Types

特に、あなたの質問に答えるために、それは、スーパークラスのデータにTypeTokenのジェネリック医薬品をキャプチャする匿名のオブジェクトを作成します。そのデータはその後、ジェネリックで抽出され、getType()Typeインスタンスとしてパッケージ化され、前述の匿名クラスによるメモリリークを回避します。

+0

あなたが提供しているリンクは便利です。 – JPG

関連する問題