一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java 泛型的詳解及實例

java 泛型的詳解及實例

2020-12-23 12:13pangpang123654 Java教程

這篇文章主要介紹了java 泛型的詳解及實例的相關資料,希望通過本文大家能徹底掌握泛型的使用方法,需要的朋友可以參考下

java 泛型的詳解及實例

java在1.5版本中增加了泛型,在沒有泛型之前,從集合中讀取每一個對象都需要進行強轉,如果一不小心插入了類型錯誤的對象,在運行時就會報錯,給日常開發帶來了很多不必要的麻煩,比如以下代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class testgeneric
{
  public static void main(string[] args) {
    list list = new arraylist();
    list.add(" name:");
    list.add(" zero,");
    list.add(" age:");
    list.add(24);
    list.add(false);
    for (object object : list)
    {
      string test = (string) object;
      system.out.print(test);
    }
  }
}
?
1
2
name:zero,age:exception in thread "main" java.lang.classcastexception: java.lang.integer cannot be cast to java.lang.string
  at com.zm.zero.test.testgeneric.main(testgeneric.java:18)

經過運行,立馬脾氣來了,小樣,來本事啦!

list和list< object>有什么區別,不嚴格的說,前者逃避了泛型檢查,后者告訴編譯器,持有一個object類型的對象,屬于編譯器的一種優化,在編譯的時候不通過來增加類型的安全性。如果上述代碼使用的是泛型,便可以避免這類事故的發生,在java的編程思想中,一直在提倡“出錯之后盡快發現”,那么編譯時發現報錯肯定優先于運行時的報錯,此處做了一個簡單的修改:

java 泛型的詳解及實例

此處僅僅是把list改成了list< string>去檢查add時候值的類型,如果add時候值的類型是非法的,編譯時便會報錯。

對于創建泛型對象,幾乎每個開發者都會使用過,比如最初學的class.forname()返回的對象就是class< t>,對于泛型方法,會有部分開發者顯得有點摸不著頭腦,好吧,啥廢話都不說了,就是干,先代碼再上圖:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class jsontomodel
{
 
  /**
   *
   * @param msg
   * @param t
   *      model類
   * @return
   */
  public static <t extends basemodel<t>> t getjsontomodel(message msg, class<t> t) {
    // todo auto-generated method stub
    try
    {
      jsonobject jsonobject = new jsonparser().parse(msg.obj.tostring())
          .getasjsonobject().getasjsonobject("info");
      return gsonhelper.totype(jsonobject.tostring(), t);
    } catch (exception e)
    {
      // todo auto-generated catch block
      e.printstacktrace();
    }
    return null;
  }
}

java 泛型的詳解及實例

除了t以外,常見的還有以下幾種:

  • e - element (在集合中使用,因為集合中存放的是元素)
  • k - key(鍵)
  • v - value(值)
  • n - number(數值類型)
  • ? - 表示不確定的java類型

日常開發中什么時候用到泛型?那就多了,比如解析json的時候,正常情況下,后臺返回的json基本格式都是相同的,但是里面字段各有不同,通過泛型傳入不同的model,大大的提高了代碼的可重用性和可維護性,為了以后的開發省去太多不必要的麻煩。

以上就是java泛型的使用方法總結,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/pangpang123654/article/details/52593269

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人一级黄色大片 | 久久精品国产在热亚洲完整版 | 成人久久久 | 国产麻豆剧果冻传媒影视4934 | 国产成人高清精品免费观看 | 嫩草视频在线观看视频播放 | 青草国产在线视频 | 性色视频免费 | 色哟呦 | 草草草草视频 | 臀控福利大臀的网站 | 婷婷综合久久 | 91视频综合网| 国产亚洲精品福利在线 | 精品久久免费视频 | 久久受www免费人成_看片中文 | 我要看靠逼片 | 精品视频国产 | www.av在线免费观看 | 国产精品视频播放 | 国产高清经典露脸3p | 美国女艳星brandilove | 日韩欧美不卡视频 | 四虎影视免费观看 | 日本护士厕所xxx | chinesespanking调教 | 极品一区 | 强女明星系列小说 | 四虎永久 | 5x社区在线观看直接进入 | 韩国一区二区三区 | 国产精品视频2021 | 羞羞麻豆国产精品1区2区3区 | 亚洲精品免费观看 | 好吊妞视频998www | 国产高清不卡码一区二区三区 | 美国大片成人性网 | 亚洲视频一区在线播放 | 2022最新a精品视频在线观看 | 女子监狱第二季未删减在线看 | 国产成人免费片在线观看 |