當前位置:首頁 » 編程語言 » java泛型的作用和實現原理

java泛型的作用和實現原理

發布時間: 2022-08-19 20:31:08

① 泛型的作用

泛型(Generic type 或者 generics)是對 java 語言的類型系統的一種擴展,以支持創建可以按類型進行參數化的類。可以把類型參數看作是使用參數化類型時指定的類型的一個佔位符,就像方法的形式參數是運行時傳遞的值的佔位符一樣。

可以在集合框架(Collection framework)中看到泛型的動機。例如,Map 類允許您向一個 Map 添加任意類的對象,即使最常見的情況是在給定映射(map)中保存某個特定類型(比如 String)的對象。
因為 Map.get() 被定義為返回 Object,所以一般必須將 Map.get() 的結果強制類型轉換為期望的類型,。

② 對java泛型的理解


型(Generic type 或者 generics)是對
簡單的理解,就是對類型的參數化,比如我們定義一個類屬性或者實例屬性時,往往要指定具體的類型,如Integer、Person等等,
但是如果使用了泛型,我們把這些具體的類型參數化,用一個廣泛的可以表示所有類型的「類型」T來定義,那這個T就是泛型的表示。

可以在集合框架(Collection framework)中看到泛型的動機。例如,Map 類允許您向一個 Map 添加任意類的對象,即使最常見的情況是在給定映射(map)中保存某個特定類型(比如 String)的對象。

因為 Map.get() 被定義為返回 Object,所以一般必須將 Map.get() 的結果強制類型轉換為期望的類型,如下面的代碼所示:

[java]view plainprint?

  • Mapm=newHashMap();

  • m.put("key","value");

  • Strings=(String)m.get("key");

  • 要讓程序通過編譯,必須將 get() 的結果強制類型轉換為 String,並且希望結果真的是一個 String。如果map中保存了的不是 String 的數據,則上面的代碼將會拋出 ClassCastException。

③ java泛型的作用,舉例說明!

簡言之,泛型是為了避免類轉換異常的發生,使程序操作更安全,舉例:
1、聲明泛型:
class Point<T>{
private T var;
public T getVar(){
return var;
}
public void setVar(T var){
this.var=var;
}
}
2、使用Point類將var的類型設置成整數
public class Test{
public static void maint(String[] args){
Point<Integer> p=new Point<Integer>();//var類型為Integer
p.setVar(30);//設置數字,自動裝箱
System.out.println(p.getVar() * 2);
}
}
3、運行:60

分析:使用泛型強制類型為某類型,比如上面為Integer,在使用setVar()方法時如果參數不是Integer(如String),程序就會報錯,提示輸入非法。當然你認為也可以不用泛型,比如將Point定義如下:
class Point1{
private Object var;
public Object getVar(){
return var;
}
public void setVar(Object var){
this.var=var;
}
}
此時,Test程序依然可以運行,但是如果將Test改動如下:
public class Test{
public static void maint(String[] args){
Point1 p=new Point1();
p.setVar(「江山美人");
System.out.println(p.getVar() * 2);
}
}
程序編寫正常,不會報錯,但到了運行才提示異常。而如果上面是應用泛型,在寫下System.out.println(p.getVar() * 2);直接就會在寫程序時提示錯誤!
這樣就達到了使用泛型的目的——避免類轉換異常的發生,使程序操作更安全。
希望能幫到你!

④ 什麼叫泛型有什麼作用

泛型。即通過參數化類型來實現在同一份代碼上操作多種數據類型。泛型類和泛型方法同時具備可重用性、類型安全和效率,這是非泛型類和非泛型方法無法具備的。泛型通常用與集合以及作用於集合的方法一起使用。

泛型是c#2.0的一個新增加的特性,它為使用c#語言編寫面向對象程序增加了極大的效力和靈活性。不會強行對值類型進行裝箱和拆箱,或對引用類型進行向下強制類型轉換,所以性能得到提高。

Java 的泛型

Java 泛型的參數只可以代表類,不能代表個別對象。由於Java泛型的類型參數之實際類型在編譯時會被消除,所以無法在運行時得知其類型參數的類型,而且無法直接使用基本值類型作為泛型類型參數。Java編譯程序在編譯泛型時會自動加入類型轉換的編碼,故運行速度不會因為使用泛型而加快。

由於運行時會消除泛型的對象實例類型信息等缺陷經常被人詬病,Java及JVM的開發方面也嘗試解決這個問題,例如Java通過在生成位元組碼時添加類型推導輔助信息,從而可以通過反射介面獲得部分泛型信息。通過改進泛型在JVM的實現,使其支持基本值類型泛型和直接獲得泛型信息等。

⑤ java中的泛型是幹嘛的,起到什麼作用什麼情況下才能用到泛型

泛型:規定了此集合中元素的類型。
例如:

ArrayList<Integer> arr = new ArrayList<Integer> ();

這樣就創建了一個包含整數的 ArrayList 對象。
如果要自己定義泛型類,就用如下形式:

class MyCollection<E> {...}

尖括弧中的類型可以有限制,例如你需要讓 MyCollection 中的類型都具有可比性,可以用如下格式:

class MyCollection<E extends Comparable> {...}

⑥ 簡述java常用3種泛型定義及其作用

泛型(Generic type 或者 generics)是對 Java 語言的類型系統的一種擴展,以支持創建可以按類型進行參數化的類。可以把類型參數看作是使用參數化類型時指定的類型的一個佔位符,就像方法的形式參數是運行時傳遞的值的佔位符一樣。
定義泛型方法語法格式如下:

定義泛型方法時,必須在返回值前邊加一個<T>,來聲明這是一個泛型方法,持有一個泛型T,然後才可以用泛型T作為方法的返回值。
Class<T>的作用就是指明泛型的具體類型,而Class<T>類型的變數c,可以用來創建泛型類的對象。

⑦ Java里泛型有什麼作用我怎麼覺得那個可寫可不寫

泛型的作用就是提高代碼的重用性,你肯定知道函數重載吧,但是重載的話還是太煩,要累贅的寫這么多的重復代碼,泛型就是就是避免強制類型轉換,減少裝箱拆箱提高性能,減少錯誤

⑧ Java中的泛型是什麼意思干什麼用的難道只是用來限制數據類型嗎

不是限制類型的
泛型的就是按同樣結構都實現了,但具體使用時的決定類型
如Vector<> 泛型,具體的向量操作如增加新元素,刪除舊元素,找元素位置的等均已實現
以後不管是整數向量,String向量還是其他定義類向量,不用修改代碼了。這也是代碼復用的體現之一。

⑨ java泛型的介紹

泛型是Java SE 1.5的新特性,泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。這種參數類型可以用在類、介面和方法的創建中,分別稱為泛型類、泛型介面、泛型方法。 Java語言引入泛型的好處是安全簡單。在Java SE 1.5之前,沒有泛型的情況的下,通過對類型Object的引用來實現參數的「任意化」,「任意化」帶來的缺點是要做顯式的強制類型轉換,而這種轉換是要求開發者對實際參數類型可以預知的情況下進行的。對於強制類型轉換錯誤的情況,編譯器可能不提示錯誤,在運行的時候才出現異常,這是一個安全隱患。泛型的好處是在編譯的時候檢查類型安全,並且所有的強制轉換都是自動和隱式的,以提高代碼的重用率。

熱點內容
php開發的網頁 發布:2025-05-14 16:22:03 瀏覽:477
伺服器內存跑滿了怎麼回事 發布:2025-05-14 16:21:16 瀏覽:223
微信qq音樂緩存 發布:2025-05-14 16:16:16 瀏覽:468
c語言回收內存 發布:2025-05-14 16:16:08 瀏覽:143
2021國產安卓頂級旗艦買哪個 發布:2025-05-14 16:15:36 瀏覽:300
linux自學視頻 發布:2025-05-14 16:14:49 瀏覽:255
我的世界伺服器崩了重啟 發布:2025-05-14 16:09:37 瀏覽:44
android深拷貝 發布:2025-05-14 16:09:35 瀏覽:153
cf電腦版轉伺服器神器還在嗎 發布:2025-05-14 16:09:02 瀏覽:211
百度文庫伺服器如何搭建 發布:2025-05-14 16:09:00 瀏覽:248