導航:首頁 > 編程語言 > 泛型java作用

泛型java作用

發布時間:2023-10-29 04:25:24

A. 什麼叫泛型有什麼作用

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

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

java 的泛型

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

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

B. java的泛型有沒有用

當然有用,其實泛型存在的意義就好比抽象類,抽象類是用來規范子類。而泛型對於實現代碼復用,提高開發效率幫助很大。
當然不用泛型可不可以,答案是可以,其實很多程序員開發多年都忘記使用泛型的方做開發,這是一個深度問題,而不是廣議問題。要想弄懂泛型,就必須要知道它存在的意義。
在項目研發中,經常會出現一個方法,多種不同類型的對象進行調用,簡單的做法就是為各自的類型寫上一個方法,獨立調用,比如:
//兩個整數相加
public int plus(int a, int b){
return a+b;
}
//兩個字元串相連接
public string connectStr(string str1, string str2){
return str + str2
}
上面是兩個函數,一個是整數的相加,一個是字元串的連接,當然,這是很簡單兩個函數;但是可以看出兩個函數的共同之處,都是相加,"+"對於字元串來講是字元串的連接,但是可以把這兩個函數寫成一個函數,如下:
public T plusTwoObj(T objT1, T objT2){
return objT1 + obT2;
}
這個函數中出現的T,其實就是一個佔位符,也就是這個位置由T來代替;類似於佔座,它起到的作用只是佔座,不會有實際的意義,最終這個位置是由其他人來坐的;比如:T給int佔座,給string佔座,給float佔座,給自定義類型佔座,實際的操作是由其它類型來處理的,其它類型會代替它;
這個函數是由兩個函數提出的公有函數,這樣,它就不局限於某一個類型的函數進行相加處理,而是許多類型可通用的方法,所以,泛型有代碼復用、提高研發效率的作用;而定義成泛型,而不用所有類型基類 object類型呢,就涉及數據類型轉換的問題,類型轉換的拆箱和裝箱需要消耗大量內存和cpu資源。
泛型需要很系統的來解釋,幾句話可能說不清,建議你還是把教材視頻等多翻出來看看。建議把泛型和抽象類結合在一起看,兩者的相似點和區別。

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

泛型是java jdk1.5出的新功能。它主要是對同一種類型做的集合,有很多人說他不好用,但是sun既然提供了他就是讓我們來用的,這樣可以少些很多代碼。

D. JAVA泛型有什麼作用泛型是實泛型還是偽泛型

泛型好處:

泛型簡單易用

類型安全 泛型的主要目標是實現java的類型安全。 泛型可以使編譯器知道一個對象的限定類型是什麼,這樣編譯器就可以在一個高的程度上驗證這個類型

消除了強制類型轉換 使得代碼可讀性好,減少了很多出錯的機會

Java語言引入泛型的好處是安全簡單。泛型的好處是在編譯的時候檢查類型安全,並且所有的強制轉換都是自動和隱式的,提高代碼的重用率。

泛型的實現原理

泛型的實現是靠類型擦除技術 類型擦除是在編譯期完成的 也就是在編譯期 編譯器會將泛型的類型參數都擦除成它的限定類型,如果沒有則擦除為object類型之後在獲取的時候再強制類型轉換為對應的類型。 在運行期間並沒有泛型的任何信息,因此也沒有優化。

泛型不考慮繼承

List 類型 是否 可以 賦值為 List類型 ?
答案是不可以的
雖然說在賦值之後 String類型可以當做 Object類型使用 但是還是會出現問題

參考:《2020最新Java基礎精講視頻教程和學習路線!》

E. 對java泛型的理解

泛型的定義主要有以下兩種:

在程序編碼中一些包含類型參數的類型,也就是說泛型的參數只可以代表類,不能代表個別對象。(這是當今較常見的定義)

在程序編碼中一些包含參數的類。其參數可以代表類或對象等等。(現在人們大多把這稱作模板)

泛型的好處是在編譯的時候檢查類型安全,並且所有的強制轉換都是自動和隱式的,提高代碼的重用率。

泛型只不過是java中的類型而已,繼承自Type介面。

F. java中在定義泛型泛型方法是方法名前加上泛型有什麼作用,也就是方法前的<T>的作用

static <T> void show(Collection<T> C){
}
//這個泛型方法中定義了一個T類型形參,這個T類型形參可以在該方法內當成普通類型使用。這里無需顯示傳入實際類型參數,無論調用該方法時傳入什麼類型的值,系統都可以判斷出最直接的類型參數。舉個例子給你看可能會更加明白:
import java.util.*;
public class 泛型Test
{
static <T> void show(Collection<T> C)
{
System.out.println("使用泛型 ------->" + C);
}
static void show2(Collection C)
{
System.out.println( C);
}
public static void main(String[] args)
{
Collection<String> C = new HashSet<>();
C.add("第一個元素");
//下面這行代碼調用show方法時會出錯,因為無法通過方法調用轉換將實際參數int轉換為String
//因為編譯器會根據實參推斷類型形參的值,所以系統都可以判斷出最直接的類型參數為String
//C.add(58);
泛型Test.show(C);
泛型Test.show2(C);
Collection d = new HashSet();
//由於java在設計集合時,並不知道我們用它來保存什麼類型的對象,所以便設計成可以保存任
//何類型的對象。同時也帶了問題,集合只是知道它裝了Object類型的值,取出元素時還需要進
//行強制類型轉換,增加了編程復雜度,也容易引發ClassCastException。下面兩行代碼中添加
//兩種不同類型的元素,沒有錯誤。
d.add(2);
d.add("第二個元素");
泛型Test.show(d);
泛型Test.show2(d);
}
}

G. java中泛型是什麼意思,作用是什麼

java 泛型是java SE 1.5的新特性,泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。這種參數類型可以用在類、介面和方法的創建中,分別稱為泛型類、泛型介面、泛型方法。
泛型(Generic type 或者 generics)是對 Java 語言的類型系統的一種擴展,以支持創建可以按類型進行參數化的類。可以把類型參數看作是使用參數化類型時指定的類型的一個佔位符,就像方法的形式參數是運行時傳遞的值的佔位符一樣。
可以在集合框架(Collection framework)中看到泛型的動機。例如,Map 類允許您向一個 Map 添加任意類的對象,即使最常見的情況是在給定映射(map)中保存某個特定類型(比如 String)的對象。
因為 Map.get() 被定義為返回 Object,所以一般必須將 Map.get() 的結果強制類型轉換為期望的類型,如下面的代碼所示:

Map m = new HashMap();
m.put("key", "blarg");
String s = (String) m.get("key");

要讓程序通過編譯,必須將 get() 的結果強制類型轉換為 String,並且希望結果真的是一個 String。但是有可能某人已經在該映射中保存了不是 String 的東西,這樣的話,上面的代碼將會拋出 ClassCastException。
理想情況下,您可能會得出這樣一個觀點,即 m 是一個 Map,它將 String 鍵映射到 String 值。這可以讓您消除代碼中的強制類型轉換,同時獲得一個附加的類型檢查層,該檢查層可以防止有人將錯誤類型的鍵或值保存在集合中。這就是泛型所做的工作。

泛型的好處
Java 語言中引入泛型是一個較大的功能增強。不僅語言、類型系統和編譯器有了較大的變化,以支持泛型,而且類庫也進行了大翻修,所以許多重要的類,比如集合框架,都已經成為泛型化的了。
這帶來了很多好處:
1,類型安全。 泛型的主要目標是提高 Java 程序的類型安全。通過知道使用泛型定義的變數的類型限制,編譯器可以在一個高得多的程度上驗證類型假設。沒有泛型,這些假設就只存在於程序員的頭腦中(或者如果幸運的話,還存在於代碼注釋中)。
2,消除強制類型轉換。 泛型的一個附帶好處是,消除源代碼中的許多強制類型轉換。這使得代碼更加可讀,並且減少了出錯機會。
3,潛在的性能收益。 泛型為較大的優化帶來可能。在泛型的初始實現中,編譯器將強制類型轉換(沒有泛型的話,程序員會指定這些強制類型轉換)插入生成的位元組碼中。但是更多類型信息可用於編譯器這一事實,為未來版本的 JVM 的優化帶來可能。由於泛型的實現方式,支持泛型(幾乎)不需要 JVM 或類文件更改。所有工作都在編譯器中完成,編譯器生成類似於沒有泛型(和強制類型轉換)時所寫的代碼,只是更能確保類型安全而已。

Java語言引入泛型的好處是安全簡單。泛型的好處是在編譯的時候檢查類型安全,並且所有的強制轉換都是自動和隱式的,提高代碼的重用率。
泛型在使用中還有一些規則和限制:
1、泛型的類型參數只能是類類型(包括自定義類),不能是簡單類型。
2、同一種泛型可以對應多個版本(因為參數類型是不確定的),不同版本的泛型類實例是不兼容的。
3、泛型的類型參數可以有多個。
4、泛型的參數類型可以使用extends語句,例如<T extends superclass>。習慣上成為「有界類型」。
5、泛型的參數類型還可以是通配符類型。例如Class<?> classType = Class.forName(Java.lang.String);
泛 型還有介面、方法等等,內容很多,需要花費一番功夫才能理解掌握並熟練應用。在此給出我曾經了解泛型時候寫出的兩個例子(根據看的印象寫的),實現同樣的 功能,一個使用了泛型,一個沒有使用,通過對比,可以很快學會泛型的應用,學會這個基本上學會了泛型70%的內容。

H. 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);直接就會在寫程序時提示錯誤!
這樣就達到了使用泛型的目的——避免類轉換異常的發生,使程序操作更安全。
希望能幫到你!

閱讀全文

與泛型java作用相關的資料

熱點內容
ie文件夾禁止訪問 瀏覽:543
百川互聯網程序員 瀏覽:781
linuxpython解釋器 瀏覽:665
興安得力軟體加密狗 瀏覽:490
智能網路攝像頭加密 瀏覽:574
軟體畢業程序員培訓 瀏覽:650
安卓陀螺儀低怎麼辦 瀏覽:245
一級建造師復習題集pdf 瀏覽:903
法理學pdf海默 瀏覽:390
伺服器內存儲器是用什麼的 瀏覽:817
微幫同城分類信息源碼 瀏覽:808
安卓系統ad是什麼 瀏覽:471
python輸出中不加佔位符 瀏覽:596
linux文件夾許可權控制 瀏覽:728
雅虎郵箱怎麼加密碼 瀏覽:819
為什麼安卓手機登錄不了蘋果賬號 瀏覽:535
如何復制usb加密狗 瀏覽:801
哪個app看你微笑時很美 瀏覽:908
mac啟動命令 瀏覽:602
ngc伺服器是什麼的簡稱 瀏覽:75