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

來源:互聯網
上載者:User

標籤:gif   java   info   接收   錯誤   print   font   長度   blog   

一.

剛才說了一下泛型類,現在準備說另外一個,在工具類的基礎上示範一下(基於上一節的泛型工具類)。

本來如果是顯示和列印String類的方法,參數中直接表明String類型即可,但是如果想顯示和列印Intrger類型的參數,那麼就需要將參數改為object。

基於泛型工具類,書寫可以是下面這樣的。工具類裡面指定什麼類型,方法就跟著操作什麼類型。

這樣書寫是否行得通,來示範一下,

傳遞String類型時沒有問題,但是工具類中的泛型是傳遞什麼類型都可以,那麼改成Integer試一下,整合工具顯示了錯誤。

因為定義的類帶有泛型,而tool這個引用指向的對象當中明確的類型是String,那麼這個對象就只能操作凡是具備String參數的方法。這個方法一明確以後,show裡面就已經是String了,那麼再傳遞其它類型就失敗了,因為類型檢查沒過去,編譯的時候沒過去。

現在我們想show裡面是任意類型的,怎麼辦?這就意味著show方法操作的物件類型不確定。有人提議將工具類中show方法的參數類型改為object,這是可以的。因為這些對象最終調用的都是object中的方法,第二張所示,多態。

還可以做第二件事,如果是不明確類型的情況下,object其實是一種具體類型。還可以是,往裡面傳遞什麼,就操作什麼,可以定義泛型,將泛型定義在方法上。

這就是定義泛型了。(w str)是在使用參數,<w>是在定義參數,只有定義了才能使用。泛型是用於定義的?

將泛型定義在方法上之後,什麼類型都可以show了,來源程式編譯運行都沒有問題。

print泛型是跟著對象走的,show的泛型是在方法上自訂的。

接著對上面的程式進行示範,添加一個靜態method方法。Integration Environment顯示編譯是錯誤的,相較於前面的print方法,這裡是多出了一個靜態修飾。

靜態是不需要對象的,泛型是需要對象來明確。靜態不知道QQ怎麼用,兩全其美的解決方案如,既要是靜態,又要是method方法能結構多種類型。

泛型方法的基本使用講解完了。

再說一點,show方法和print方法接收的是字串的話,能否列印字串的長度呢?下面顯示是不可以的,一旦使用了泛型,變數類型是不確定的,那怎麼能使用一個具體對象的方法,萬一傳遞的是person類型,怎麼能寫成str.length()。但是這個變數有些方法是可以用的,

 哪些方法是可以用的呢?用點號顯示出來。我們知道無論傳遞什麼類型進來,肯定都是object類型的對象,因此,肯定具備object方法。

如果show或者print方法裡面直接寫成object的話,那麼只能使用object方法,但是,如果寫成泛型的形式,後面會講述到,這個W類型是可以進行一個應用的。

 

 

 

 

 

 

 

 

 

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.