標籤: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(集合架構-泛型-泛型方法)