日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

new TypeToken<List>>(){}.getType() 是什么意思

發布時間:2023/12/18 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 new TypeToken<List>>(){}.getType() 是什么意思 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

1. ?項目中代碼:

List<AppVersion> redisList = new Gson().fromJson(json, new TypeToken<List<AppVersion>>(){}.getType());

2. ? fromJson方法就是下面這個方法,將一個Json數據轉換為對象。

提供兩個參數,分別是json字符串以及需要轉換成對象的類型。

在我們項目中是把Json格式的數據轉換成List<AppVersion> 類型。

@SuppressWarnings("unchecked")public <T> T fromJson(String json, Type typeOfT) throws JsonSyntaxException {if (json == null) {return null;}StringReader reader = new StringReader(json);T target = (T) fromJson(reader, typeOfT);return target;}

3. ?new TypeToken<List<AppVersion>>(){}.getType() ?,這個位置要的參數是一個Type,表示是xxx類型,但是Type是個接口,如下:

?

public interface Type {/*** Returns a string describing this type, including information* about any type parameters.** @implSpec The default implementation calls {@code toString}.** @return a string describing this type* @since 1.8*/default String getTypeName() {return toString();} }

new XXX(); ?這樣是一個構造函數,但是接口是不能直接new的,所以這時用到了匿名內部類,實現接口成為一種具體的類型。

TypeToken,它是gson提供的數據類型轉換器,可以支持各種數據集合類型轉換。

先調用TypeToken<T>的構造器得到匿名內部類,再由該匿名內部類對象調用getType()方法得到要轉換成的type,

在此就是得到的type就是列表類型:List<AppVersion>類型。

??new TypeToken<List<AppVersion>>(){}.getType() ?就是說要把Json數據轉換成List<AppVersion>類型的結果。

4. 匿名內部類使用還有如:

<span style="color:#333333">new TypeToken<LinkedList<User>>(){}匿名內部類常用在監聽里面,比如我們給一個按鈕加監聽:JButton btn = new JButton("test"); btn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {} });</span>

btn.addActionListener() 方法接受的是一個 ActionListener 類型的對象,而 ActionListener 是一個接口,不能直接 new。

所以本來這里該寫一個類實現ActionListener接口,然后給他傳參為實現類對象,

但是太麻煩了,我們直接在這里創建了那個實現類,之所以叫匿名,就是因為new的時候實現為一個類就直接調方法了,根本沒有給這個類取名。

5. Gson提供的fromJson()方法是實現從Json數據到Java實體的方法,可以把Json數據轉成單一實體對象類型、對象列表類型、其他結構類型。

比如:

?第一種 ? json字符串為:[{“name”:”name0”,”age”:0}] ?轉成 Person 類型:

Person person = gson.fromJson(str, Person.class);

第二種,轉換成列表類型:

List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());

6. 可能出現問題:

將整形數字1存入json串,經gson解析后,可能會變成1.0,這時要用第二種轉換方式。才會得到我們想要的整形1。

?

參考:http://blog.csdn.net/alexxu1988/article/details/46685433

? ? ? ? ? ?http://blog.csdn.net/jonemill/article/details/39084809

總結

以上是生活随笔為你收集整理的new TypeToken<List>>(){}.getType() 是什么意思的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。