注:這裡只簡單介紹了一下泛型最基礎的使用,泛型功能很強大,為了趕課程,關於通用型別部分過後補上。別被我的筆記所誤導 。
課程中的泛型首先是由泛型集合開始入手的。由前邊的兩個集合arraylist和hashmap可以看出,在使用方便的同時也帶來了很多問題。
1,效率低下,集合都是object的型別,使用是需要頻繁的裝箱,拆箱(資料型別轉換)。
2,安全性低,object型是乙個很大的範圍,寫**時不會報錯,但實際使用中,型別轉換時可能出現無法轉換造成的不可預知的錯誤。
例:arraylist list=new arraylist();
list.add(1);
list.add(2);
.......
list.add(n);
int sum=0;
for ( int i=1;iint num=(integer)list.get(i);//list是object型必須轉換成int型別進行計算
sum+=num;
}/**這樣使用沒有任何問題,1,傳入資料從int型轉換成object型存入list,使用時還要從object轉換回來這樣就大大減低了效率。2,實際使用中的資料不可能由程式設計師控制,add的型別完全是int型,如果出現add(「aaaa」),那麼下邊的for迴圈就會出現錯誤,造成整個系統的崩潰。這就需要將這種預知錯誤提前進行排除。從arraylist定義開始就限制了傳入資料必須是int型別。*/
例:arraylistlist=new arraylist();
list.add(1);
list.add(2);
.......
list.add(n);
int sum=0;
for ( int i=1;i//int num=(integer)list.get(i);
//sum+=num;
sum+=list.get(i)
} //同樣是乙個例子,通過下邊的型別限定,就限制了list中使用的必須是int型別,避免了型別的不匹配和型別轉換的過程。既提高了安全性也增加了效率。
擴充套件例子:自定義乙個類 (以學生為例)student,包含字段:int studentid ,string studentname。
arraylistlist=new arraylist(); //定義了乙個個只能存放student類的集合
student student=new student(0001,「張三」);
list.add(sutdent); //這樣將乙個student類放入了集合中。 當然例子中可通過迴圈方式向對list進行多次add操作這裡僅以最簡單的方法說明。
hashmap泛型只虛要多定義乙個index項如:hashmapmap=new hashmap();//第乙個型別是鍵,從上邊例子的studentid而來因此是integer型別,後邊是student型別。
java 泛型學習筆記
首先我對泛型的理解就是可以把任何object的子類當做類中的型別,下面是對於泛型的基本定義 public class generict public object getfoo 然後對於泛型 可以有兩個型別或者更多 public class generictt public void setfoo1...
JAVA 泛型 學習筆記
首先為了方便下面 的理解,這裡先提一下一些下面會用到的三個物件 person student和worker。person的屬性只有string型別的name和int型別的age,其他就是一些基本的方法 student和worker都是完全繼承person類,都沒有新的屬性 下面開始正題 泛型,字面上...
Java學習筆記 泛型
一看到泛型就想到一對尖括號?jdk5以後的jdk的集合中就經常使用,例如collectioncollections 然而jdk5中剛剛出現集合框架的時候,集合框架中的變數都是object,因為系統不知道使用者要使用什麼型別的變數。自從jdk5後,引入了 引數化型別 parameterized typ...