1、泛型的意義:
往小處說,是為了實現型別安全的集合
往大處說,是為了實現模版程式設計的理念
2、為什麼要出現泛型:
雖然集合具有長度可擴充、插入刪除方便等強大的特性
但是集合內部可以儲存的物件是型別不安全的
釋義:什麼是型別不安全:
因為集合內部可以裝入/取出的元素是object型別
因此任何物件都能夠往裡裝
這時若想要從集合中取得乙個string物件時
則必須要在取出後將其強制轉換成string型別
但是如果取出的物件並非string型別的物件
則強制轉換就會發生錯誤,這就是型別不安全
因此採用泛型是為了實現型別安全,同時提高程式的可讀性
3、泛型的含義:
簡單地理解,泛型的含義就是,在定義集合的時候,就指定集合內部可以裝入物件的型別。
這樣該集合內就只能裝入該種型別的物件,同時取出的物件也是該種型別的,而不再是object。
定義的格式是:
list list = new arraylist ();
這樣list.add("abc");是合法的,list.add(123);就是非法的
同時string s = list.get(0);是合法的,而不需要再次進行強制型別轉換
/*********以下內容為擴充套件知識*********/
4、不同泛型的集合不能夠相互賦值:
只有泛型相同的集合之間才能夠相互賦值
不支援泛型為子類的集合賦值給泛型為父類的集合
例如:public void print(list list)
}list list1 = new arraylist ();
list list2 = new arraylist ();
print(list1); //非法
print(list2); //合法
5、萬用字元"?"
以上問題的解決方法是:
public void print(list <?> list)
}list list1 = new arraylist ();
list list2 = new arraylist ();
print(list1) //合法
print(list2) //合法
*?是泛型的萬用字元,可以代表任意乙個泛型
*也可以限制?可以代表泛型的泛圍,語法是:
<? extends string> //限制該泛型只能是string或string的子類
<? extends comparable> //限制該泛型只能是comparable的實現類(注意這裡用的也是extends)
<? super number> //限制該泛型只能是number或number的父類
6、定義泛型方法:
格式:在方法的返回值前面加上,可以使方法稱為泛型方法(模版)
作用:用於統一方法內部的引數型別,t的型別由呼叫該方法時的引數決定
例子:public class testgenerics3
}public static void main(string args)
}7、定義泛型類:
格式:在類名後面加上,可以使該類稱為泛型類
作用:用於動態決定類內部的方法引數型別和返回值型別
例子://定義乙個介面,定義介面的泛型為t
//那麼,該介面的實現類指定t的具體型別是什麼,t的型別就是什麼
inte***ce i
//指定介面i內的t為string型別
class ic1 implements i
}//指定介面i內t為collection型別
class ic2 implements i }
JAVA高新技術 列舉篇
1 為什麼要出現列舉 在現實生活中,有許多實體有且僅有特定的幾個屬性 例如 月份只有1 12月,性別只有男女,季節只有四季 等 若將其型別定義成常量,則不可避免地出現非法引數的問題 例如 13月,第三個性別,第五個季節 等 因此,對於上述型別的物件,必須規定其特定的屬性值為列舉型別,即 僅能從已有的...
Java高新技術 列舉
說明 當乙個類的物件個數固定,且不需要再建立這個類新的物件時,可以考慮用列舉。一,列舉原理 列舉型別特有 1.私有構造方法 2.每個元素分別用乙個公有的靜態成員變數表示 3.可以有若干個公有方法或抽象方法,抽象方法可以使每個元素 本類物件 通過覆蓋具有自己獨特的內容 注 列舉型別的元素就是本類物件,...
高新的技術對不對 有關高新技術
有關高新技術 一 高新技術的含義 高新科學技術,也叫高技術 高科技。年 高技術 一詞被收入美國出版的 韋氏第 三版國際詞典補充 個詞 中,由此作為乙個正式名詞固定下來。一般而言,它的含義 是動態變化的,是不斷發展的乙個概念。從地域上看,不同的國家對高技術有不同的理解。被稱為南韓 經濟起飛 科技發展之...