前言
泛型((Generic)在 JAVA 中有很重要的地位,在物件導向編程及各種設計模式中有非常廣泛的應用。
什麼是泛型?為什麼要使用泛型?
泛型,即「參數化型態」。一提到參數,最熟悉的就是定義方法時形式參數(formal parameter, parameter, 參數),然後調用此方法時傳遞實際參數(actual parameter, arguments, 引數)。那麼參數化型態怎麼理解呢?顧名思義,就是將型態由原來具體的型態參數化,類似於方法中的變數參數,此時型態也定義成形式參數(可以稱之為形式型態參數),然後在使用/調用時傳入具體的型態(實際型態參數)。
泛型的本質是為了參數化型態(在不創建新型態的情況下,通過泛型指定的不同型態來控制形式參數具體限制的型態)。也就是說在泛型使用過程中,操作的數據型態被指定為一個參數,這種參數型態可以用在類別、介面和方法中,分別被稱為泛型類別(Generic Class)、泛型介面(Generic Interface)、泛型方法(Generic Method)。
一、沒有泛型會怎樣?
先看下面這段代碼,我們實現兩個能夠設置點座標的類別,分別設置 Integer 型態的點座標和 Float 類型的點座標:
那現在有個問題:大家有沒有發現,他們除了變數型態不一樣,一個是 Integer,一個是 Float 以外,其它並沒有什麼區別!那我們能不能合併成一個呢?