激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美a久久| 噜噜噜影院 | av在线免费观看网 | 国产一国产一级毛片视频在线 | 精国品产一区二区三区有限公司 | 国产亚洲欧美一区久久久在 | 狠狠操夜夜爱 | 免费黄色入口 | 在线播放黄色片 | 法国性hdfreexxxx人妖 | 天天干导航 | 午夜久久久精品一区二区三区 | 成人在线国产 | 成年人黄色免费电影 | 免费视频www在线观看 | 国产精品久久久久久久久久 | 国产精品7区 | 久久久一区二区三区视频 | av色哟哟| 免费在线观看一级片 | 久久久经典视频 | 国产午夜精品视频免费不卡69堂 | 毛片免费在线播放 | 中国大陆高清aⅴ毛片 | 亚洲影院在线 | 大号bbwassbigav头交 | 亚洲一级簧片 | 免费播放欧美毛片 | 精品一区二区三区免费爱 | 91精品福利视频 | 视频一区二区三区中文字幕 | 日本道中文字幕 | 在线亚洲欧美日韩 | 激情宗合 | 激情夜色| 欧美亚洲一区二区三区四区 | 日韩中文一区 | 91网页| 国产精品久久久久久久亚洲按摩 | 国产免费观看一区二区三区 | 蜜桃网站在线 |