JAVA-初步認識-常用對象API(集合架構-泛型-泛型類)

來源:互聯網
上載者:User

標籤:寫法   nbsp   person   student   image   inf   類型   alt   自訂   

一.

泛型我們瞭解完基本原理之後,除了在集合中用來傳遞參數類型外,還有其它的應用。它還能為我們提供很多設計上的便捷。

介紹一下以前和現在的定義方法,有什麼不一樣。

這裡面為了方便於應用,搞了一個工具類,和主要的程式分開發。

對工具類的描述,現在要操作person,要用工具類對person對象進行操作,可以完成person對象的設定和擷取。

這個工具類只能操作person,不能操作其它對象。如果想要其它對象,還要書寫Tool1,Tool2......這樣很麻煩,怎麼辦?(對傳輸進來的person對象進行操作)

可以不可以定義一個工具類,操作所有對象。如果想定義一個工具類,操作所有對象,應該找到所有對象的共性,比如將這裡的person改為object就可以了。

如果寫成object了,那就意味著什麼對象都能操作。

有一個快捷修改操作,如所示。

現在示範一下,建立學生和工人,以及人這三個類,學生和工人都繼承人這個類,這是下面示範的基礎。(這些都是在泛型主函數之外的部分)

現在往主函數中建立一個工具類,然後傳入一個學生類,再通過gerobject取出學生類。圖書顯示了波浪線,表明出錯了。

出錯的原因是:學生往工具類中儲存後,就意味著向上轉型了,接著往外取的時候就是object類。要想取出特有類型的話,必須要強轉。

上面是我們以前的做法,運行一下,沒有出錯。

現在一不小心,往裡面傳遞了一個worker類,

回過去看tool類,裡面接收的是object類,所以往裡面儲存student類,或者worker類,都是可以的。編譯時間不會報錯,但是上述程式在運行時出現了錯誤。

這就是我們以前的做法,為了提高程式的擴充性,我們用的全都是object,什麼對象都能往裡面傳遞。好處是object出現,提高擴充性了,但是帶有弊端了,就是要強轉。不強轉不能用。

現在做一些改動,對tool中裝載有object的程式,做一個改動。

將修改前後寫在一個java工具類中,上下對照著看。在寫工具類的時候,這個是用來操作對象工具類,緊接著你要操作哪個對象,不確定。以前是用object,現在有了泛型,就不那麼弄了。操作哪個對象,你給我傳遞,傳遞哪個,就操作哪個。在上面定義參數,這是5.0才有的。

以前玩Arralist是java定義好的,現在這個是我們定義的,這叫做自訂泛型類。

如果沒有泛型就用object,你可以理解為泛型是object中的一種方案,但是這種方式更為安全。

現在回過來取修改前面錯誤的程式,

如果從頭到尾都是student的話,編譯運行是沒有問題的,但是現在不小心輸入了worker了。

上面的輸入worker的寫法,如果是早期的寫法,啟動並執行時候就出現了錯誤。現在改成泛型的寫法,編譯都通過不了。這就是泛型的好處,進一步驗證了泛型將運行時的問題,轉到了編譯時間期。避免了強轉的麻煩。

這種方式要比object安全的多,但是書寫麻煩,要寫角括弧,

 

JAVA-初步認識-常用對象API(集合架構-泛型-泛型類)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.