成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Java中泛型總結(推薦)

Java 泛型(generics)是 JDK 5 中引入的一個新特性, 泛型提供了編譯時類型安全檢測機制,該機制允許程序員在編譯時檢測到非法的類型。
泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。

創(chuàng)新互聯公司服務項目包括饒河網站建設、饒河網站制作、饒河網頁制作以及饒河網絡營銷策劃等。多年來,我們專注于互聯網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯網行業(yè)的解決方案,饒河網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到饒河省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

泛型類

范例:泛型類的基本語法

class MyClass<T> {
	T value1;
}

尖括號 <> 中的 T 被稱作是類型參數,用于指代任何類型。實際上這個T你可以任意寫,但出于規(guī)范的目的,Java還是建議我們用單個大寫字母來代表類型參數。常見的如:

  1. T 代表一般的任何類。
  2. E 代表 Element 的意思,或者 Exception 異常的意思。
  3. K 代表 Key 的意思
  4. V 代表 Value 的意思,通常與 K 一起配合使用。
  5. S 代表 Subtype 的意思,文章后面部分會講解示意。

范例:泛型類引入多個類型參數以及使用

class MyClass<T,E> {
	T value1;
	E value2;
}
public class Test {
	public static void main(String[] args) {
		MyClass<String,Integer> myClass1 = new MyClass<String,Integer>();
	}
}

當開發(fā)的程序可以避免向下轉型,也就意味著安全隱患被消除了。盡量不要去使用向下轉型。
泛型的出現徹底改變了向下轉型的需求。引入泛型后,如果明確設置了類型,則為設置類型;如果沒有設置類型,
則默認為Object類型。

泛型方法

泛型不僅可以用于定義類,還可以單獨來定義方法。如下所示:
范例:泛型方法定義

class MyClass{
	public <T> void testMethod(T t) {
		System.out.println(t);
	}
}

 泛型方法與泛型類稍有不同的地方是,類型參數也就是尖括號那一部分是寫在返回值前面的。 中的 T 被稱為類型參數,而方法中的 T 被稱為參數化類型,它不是運行時真正的參數。

當然,聲明的類型參數,其實也是可以當作返回值的類型的。

范例:使用類型參數做返回值的泛型方法

class MyClass{
	public <T> T testMethod(T t) {
		return t;
	}
}

在程序類中追加了泛型的定義后,避免了ClassCastException 的問題,但是又會產生新的情況:參數的統一問題。

范例:觀察程序

public class TestDemo {
	public static void main(String[] args) {
		Message<Integer> message = new Message() ;
		message.setMessage(99);
		fun(message); // 出現錯誤,只能接收String
	}
	public static void fun(Message<String> temp){
		System.out.println(temp.getMessage());
	}
}

范例:使用通配符

public class TestDemo {
	public static void main(String[] args) {
		Message<Integer> message = new Message() ;
		message.setMessage(55);
		fun(message);
	}
	// 此時使用通配符"?"描述的是它可以接收任意類型,但是由于不確定類型,所以無法修改
	public static void fun(Message<?> temp){
		//temp.setMessage(100); 無法修改!
		System.out.println(temp.getMessage());
	}
}

泛型接口

泛型除了可以定義在類中,也可以定義在接口里面,這種情況我們稱之為泛型接口。

范例:定義一個泛型接口

interface IMessage<T> {
	// 在接口上定義了泛型
	public void print(T t) ;
}

范例:在子類定義時繼續(xù)使用泛型

interface IMessage<T> {
	 // 在接口上定義了泛型
	public void print(T t) ;
}
class MessageImpl<T> implements IMessage<T> {
	@Override
	public void print(T t) {
		System.out.println(t);
	}
}
public class TestDemo {
	public static void main(String[] args) {
		IMessage<String> msg = new MessageImpl() ;
		msg.print("Hello World");
	}
}

以后我們編寫的程序一定會使用泛型接口,要求大家一定要掌握。

類型擦除

泛型是 Java 1.5 版本才引進的概念,在這之前是沒有泛型的概念的,但顯然,泛型代碼能夠很好地和之前版本的代碼很好地兼容。

這是因為,泛型信息只存在于代碼編譯階段,在進入 JVM 之前,與泛型相關的信息會被擦除掉,專業(yè)術語叫做類型擦除。

通俗地講,泛型類和普通類在 java 虛擬機內是沒有什么特別的地方。

以上所述是小編給大家介紹的Java中泛型總結詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對創(chuàng)新互聯網站的支持!

文章題目:Java中泛型總結(推薦)
標題URL:http://jinyejixie.com/article16/pggogg.html

成都網站建設公司_創(chuàng)新互聯,為您提供網站設計、用戶體驗Google、動態(tài)網站、手機網站建設、ChatGPT

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都網頁設計公司
岢岚县| 太保市| 多伦县| 都安| 左云县| 岳普湖县| 南华县| 宜城市| 泸西县| 虎林市| 宁波市| 丰县| 福贡县| 金阳县| 永州市| 台前县| 句容市| 浦城县| 平泉县| 鹤山市| 特克斯县| 扎囊县| 镇江市| 大邑县| 库车县| 定南县| 长顺县| 昌平区| 吉水县| 祁阳县| 南部县| 上林县| 平乐县| 永德县| 南江县| 彭山县| 始兴县| 博罗县| 开封县| 公主岭市| 南澳县|