最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 泛型的詳解及實(shí)例

 更新時(shí)間:2017年08月29日 15:18:38   投稿:lqh  
這篇文章主要介紹了java 泛型的詳解及實(shí)例的相關(guān)資料,希望通過本文大家能徹底掌握泛型的使用方法,需要的朋友可以參考下

java 泛型的詳解及實(shí)例

Java在1.5版本中增加了泛型,在沒有泛型之前,從集合中讀取每一個(gè)對(duì)象都需要進(jìn)行強(qiáng)轉(zhuǎn),如果一不小心插入了類型錯(cuò)誤的對(duì)象,在運(yùn)行時(shí)就會(huì)報(bào)錯(cuò),給日常開發(fā)帶來了很多不必要的麻煩,比如以下代碼:

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);
    }
  }
}
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)

經(jīng)過運(yùn)行,立馬脾氣來了,小樣,來本事啦!

List和List< Object>有什么區(qū)別,不嚴(yán)格的說,前者逃避了泛型檢查,后者告訴編譯器,持有一個(gè)Object類型的對(duì)象,屬于編譯器的一種優(yōu)化,在編譯的時(shí)候不通過來增加類型的安全性。如果上述代碼使用的是泛型,便可以避免這類事故的發(fā)生,在Java的編程思想中,一直在提倡“出錯(cuò)之后盡快發(fā)現(xiàn)”,那么編譯時(shí)發(fā)現(xiàn)報(bào)錯(cuò)肯定優(yōu)先于運(yùn)行時(shí)的報(bào)錯(cuò),此處做了一個(gè)簡(jiǎn)單的修改:

此處僅僅是把List改成了List< String>去檢查add時(shí)候值的類型,如果add時(shí)候值的類型是非法的,編譯時(shí)便會(huì)報(bào)錯(cuò)。

對(duì)于創(chuàng)建泛型對(duì)象,幾乎每個(gè)開發(fā)者都會(huì)使用過,比如最初學(xué)的Class.forName()返回的對(duì)象就是Class< T>,對(duì)于泛型方法,會(huì)有部分開發(fā)者顯得有點(diǎn)摸不著頭腦,好吧,啥廢話都不說了,就是干,先代碼再上圖:

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;
  }
}

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

  • E - Element (在集合中使用,因?yàn)榧现写娣诺氖窃?
  • K - Key(鍵)
  • V - Value(值)
  • N - Number(數(shù)值類型)
  • ? - 表示不確定的java類型

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

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

相關(guān)文章

  • java實(shí)現(xiàn)ATM取款項(xiàng)目

    java實(shí)現(xiàn)ATM取款項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)ATM取款項(xiàng)目的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • MyBatis框架關(guān)聯(lián)映射實(shí)例詳解

    MyBatis框架關(guān)聯(lián)映射實(shí)例詳解

    這篇文章主要介紹了MyBatis框架關(guān)聯(lián)映射,關(guān)系映射主要處理復(fù)雜的SQl查詢,如子查詢,多表聯(lián)查等復(fù)雜查詢,應(yīng)用此種需求時(shí)可以考慮使用,需要的朋友可以參考下
    2022-11-11
  • 簡(jiǎn)單探索 Java 中的惰性計(jì)算

    簡(jiǎn)單探索 Java 中的惰性計(jì)算

    這篇文章主要介紹了簡(jiǎn)單探索 Java 中的惰性計(jì)算,惰性計(jì)算(盡可能延遲表達(dá)式求值)是許多函數(shù)式編程語言的特性。惰性集合在需要時(shí)提供其元素,無需預(yù)先計(jì)算它們,這帶來了一些好處。,需要的朋友可以參考下
    2019-06-06
  • 解決RedisTemplate調(diào)用increment報(bào)錯(cuò)問題

    解決RedisTemplate調(diào)用increment報(bào)錯(cuò)問題

    這篇文章主要介紹了解決RedisTemplate調(diào)用increment報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Spring項(xiàng)目中swagger用法與swagger-ui使用

    Spring項(xiàng)目中swagger用法與swagger-ui使用

    這篇文章主要介紹了Spring項(xiàng)目中swagger用法與swagger-ui使用,通過圖文并茂的形式給大家介紹了編寫springboot項(xiàng)目的方法及導(dǎo)入spring-fox依賴的代碼詳解,需要的朋友可以參考下
    2021-05-05
  • Java 中的 this 和 super 區(qū)別

    Java 中的 this 和 super 區(qū)別

    這篇文章主要介紹了Javathis與super本質(zhì)區(qū)別,this與super是類實(shí)例化時(shí)通往Object類通道的打通者;this和super在程序中由于其經(jīng)常被隱式的使用而被我們忽略,但是理解其作用和使用規(guī)范肯定是必須的。接下來將詳述this與super的作用和區(qū)別,需要的朋友可以參考一下
    2021-11-11
  • Springboot整合Redis的詳細(xì)教程分享

    Springboot整合Redis的詳細(xì)教程分享

    這篇文章主要為大家詳細(xì)介紹了如何利用SpringBoot整合Redis,文中的示例代碼講解詳細(xì),具有很好的參考價(jià)值,希望對(duì)大家有所幫助
    2022-08-08
  • idea中的lombok不生效的四種解決方法

    idea中的lombok不生效的四種解決方法

    Lombok項(xiàng)目是一個(gè)java庫,它可以自動(dòng)插入到編輯器和構(gòu)建工具中,本文將詳細(xì)給大家介紹idea中的lombok不生效的四種解決方法,需要的朋友可以參考下
    2023-05-05
  • idea代碼模板設(shè)置方式

    idea代碼模板設(shè)置方式

    這篇文章主要介紹了idea代碼模板設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java中dubbo+zookeeper微服務(wù)架構(gòu)簡(jiǎn)介

    Java中dubbo+zookeeper微服務(wù)架構(gòu)簡(jiǎn)介

    Apache Dubbo是一款高性能的 Java RPC 框架,這篇文章主要介紹了Java中dubbo+zookeeper微服務(wù)架構(gòu),需要的朋友可以參考下
    2021-09-09

最新評(píng)論

醴陵市| 东乡族自治县| 江北区| 手机| 桐乡市| 寻乌县| 邵阳县| 山丹县| 靖远县| 体育| 吉木萨尔县| 凭祥市| 万州区| 五指山市| 垫江县| 天全县| 龙南县| 阳曲县| 奎屯市| 毕节市| 龙门县| 宜兴市| 东乡| 临桂县| 芦山县| 绥芬河市| 友谊县| 阿克苏市| 叙永县| 东港市| 永胜县| 犍为县| 辽宁省| 阳山县| 唐河县| 柯坪县| 蒙自县| 阳春市| 兰坪| 贵溪市| 旺苍县|