導航:首頁 > 安裝方法 > java泛型方法用在哪裡

java泛型方法用在哪裡

發布時間:2022-11-01 00:14:35

Ⅰ 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%的內容。

Ⅱ 北大青鳥java培訓:JAVA泛型淺談

1.概述在引入泛型之前,Java類型分為原始類型、復雜類型,其中復雜類型分為數組和類。
java課程http://www.kmbdqn.cn/發現引入范型後,一個復雜類型就可以在細分成更多的類型。
例如原先的類型List,現在在細分成List<Object>,List<String>等更多的類型。
注意,現在List<Object>,List<String>是兩種不同的類型,他們之間沒有繼承關系,即使String繼承了Object。
2.定義&使用類型參數的命名風格為:推薦你用簡練的名字作為形式類型參數的名字(如果可能,單個字元)。
最好避免小寫字母,這使它和其他的普通的形式參數很容易被區分開來。
使用T代表類型,無論何時都沒有比這更具體的類型來區分它。
這經常見於泛型方法。
如果有多個類型參數,我們可能使用字母表中T的臨近的字母,比如S。
如果一個泛型函數在一個泛型類裡面出現,最好避免在方法的類型參數和類的類型參數中使用同樣的名字來避免混淆。
對內部類也是同樣。
2.1定義帶類型參數的類在定義帶類型參數的類時,在緊跟類命之後的<>內,指定一個或多個類型參數的名字,同時也可以對類型參數的取值范圍進行限定,多個類型參數之間用,號分隔。
定義完類型參數後,可以在定義位置之後的類的幾乎任意地方(靜態塊,靜態屬性,靜態方法除外)使用類型參數,就像使用普通的類型一樣。
注意,父類定義的類型參數不能被子類繼承。
2.2定義待類型參數方法在定義帶類型參數的方法時,在緊跟可見范圍修飾(例如public)之後的<>內,指定一個或多個類型參數的名字,同時也可以對類型參數的取值范圍進行限定,多個類型參數之間用,號分隔。
定義完類型參數後,可以在定義位置之後的方法的任意地方使用類型參數,就像使用普通的類型一樣。

Ⅲ java泛型有什麼用

泛型。規定了此集合中元素的類型。例如:ArrayListarr=newArrayList();這樣就創建了一個包含整數的ArrayList對象。如果要自己定義泛型類,就用如下形式:classMyCollection{}尖括弧中的類型可以有限制,例如你需要讓MyCollection中的類型都具有可比性,可以用如下格式:classMyCollection{}此外,要注意泛型的一些特性:1.不能直接創建泛型數組。如newArrayList[5]之類的是錯的。只能用如下方法:newArrayList[5]或者(ArrayList[])newArrayList[5];2.靜態方法中需要小心,因為E一般是非靜態類型,如果你這樣寫:classMyCollection{publicstaticMyCollectionabc(){}}是錯的。你只能把去掉。

Ⅳ Java基礎知識總結:什麼時候用泛型類

當類中的操作的引用數據類型不確定的時候,以前用的Object來進行擴展的,現在可以用泛型來表示。這樣可以避免強轉的麻煩,而且將運行問題轉移到的編譯時期。
----------------------------------------------------------
泛型在程序定義上的體現:
//泛型類:將泛型定義在類上。
class Tool {
private Q obj;
public void setObject(Q obj) {
this.obj = obj;
}
public Q getObject() {
return obj;
}
}
//當方法操作的引用數據類型不確定的時候,可以將泛型定義在方法上。
publicvoid method(W w) {
System.out.println("method:"+w);
}
//靜態方法上的泛型:靜態方法無法訪問類上定義的泛型。如果靜態方法操作的引用數據類型不確定的時候,必須要將泛型定義在方法上。
public static void function(Q t) {
System.out.println("function:"+t);
}
//泛型介面.
interface Inter{
void show(T t);
}
class InterImplimplements Inter{
public void show(R r) {
System.out.println("show:"+r);
}
}

Ⅳ JAVA中的泛型用法一種: <T> 返回值用法。

1、對於泛型方法來說,是可以接收不同類型的參數,比如下圖,使用泛型來操作List集合,然後向List中添加一條數據,看是否可以添加成功,創建泛型方法如圖所示。

Ⅵ 除了集合,java中的泛型還用於哪些場景

publicclassMain{
publicstaticvoidmain(String[]args){
Stringstr=Simple.getSome("string");
System.out.println(str.getClass().getName()+""+str);

Integernumber=Simple.getSome(Integer.valueOf(5));
System.out.println(number.getClass().getName()+""+number);

Studentstudent=Simple.getSome(newStudent("張三"));
System.out.println(student.getClass().getName()+""+student);
}
}

classSimple{
publicstatic<T>TgetSome(Tt){
returnt;
}
}

classStudent{
privateStringname;

publicStudent(Stringname){
super();
this.name=name;
}

@Override
publicStringtoString(){
return"Student[name="+name+"]";
}
}


使用泛型 Simple類的getSome方法可以根據任意輸入返回不同的類型




publicclassMain{
publicstaticvoidmain(String[]args){
Simple<String>s=newSimple<String>();
}
}

classSimple<T>{
privateList<T>list=null;
publicSimple(){
super();
this.list=newArrayList<T>();
}
}

Simple類有個 List 但是 List中的類型 直到new Simple 時候才確定

Ⅶ Java 泛型如何使用

拿LIST做例子吧,泛型就是保證了LIST存儲的內容的類型。
比如List<String> slist,那就可以直接往slist里存String類型的東西,取出來時也不用做類型轉換,直接slist.get(i)就是取出內容了。如果非泛型的LIST,取出來是object類型,要做類型轉換

Ⅷ java中的泛型具體能應用在哪些方面上

泛型本質上是提供類型的"類型參數",它們也被稱為參數化類型(parameterized type)或參量多態(parametric polymorphism)。其實泛型思想並不是 Java 最先引入的,C++ 中的模板就是一個運用泛型的例子。
具體應用會在實際開發中領悟到的!

Ⅸ java中什麼是泛型,怎麼用泛型

這是在各種Java泛型面試中,一開場你就會被問到的問題中的一個,主要集中在初級和中級面試中:

1:什麼是泛型?
泛型就是廣泛的類型,也是一種數據類型,而這種數據類型可以是任意類型,編寫過程中當中不能確定類型,創建對象時必須指定具體類型,不指定也可以,但是會出現一些錯誤。

泛型是編譯器行為,只能在編譯期有效,如果能夠跨過編譯器,那麼泛型就沒有任何意義了。
2、泛型類
怎麼定義泛型類?
在類後面加<>,<>中可以編寫任意長度任意字元,不能是數值。(一般用26個大寫英文字母表示)
泛型類 <具體類型> 變數名 = new 泛型類<>();
3.怎麼使用泛型
有以下幾種使用場景以及放在那種位置
泛型只能定義引用數據類型,而不能使用基本數據類型
泛型類、泛型方法、泛型介面、泛型通配符
例如:作用在類上時( public class Animal <E> { E pet; } ) , 泛型跟在類後邊,可以指定用了泛型的類內部的 pet 的類型。
作用在對象上時( Animal<Dog> str = new Animal<Dog>(); ) , 泛型跟在類後邊 , 使得對象類的的 pet 屬性為 Dog類型。

Ⅹ java 泛型的幾種用法

1. public class DAO<T> {
/**
* 泛型類
* 聲明類的同時聲明泛型類型
* 1.方法的返回值可以是使用聲明的泛型類型
* 2.方法的參數也可以是聲明類的泛型類型
* 3.方法體內可以使用泛型類型
*/
public T get(Integer id){
return null;
}

public void save(T entity){
}
}
2.
/**
* 泛型方法: 在方法聲明時, 同時聲明泛型. 在方法的返回值, 參數列表以及方法體中都可以使用泛型類型.
* public static <T> T get(Integer id){
* T result = null;
* return result;
* }
* 把指定類型的數組中的元素放入到指定類型的集合中
*/

閱讀全文

與java泛型方法用在哪裡相關的資料

熱點內容
比亞迪f3遙控器使用方法 瀏覽:75
地攤垃圾分類解決方法 瀏覽:342
男1個星期內快速瘦臉方法 瀏覽:15
白糖做的餅乾的最簡單製作方法 瀏覽:799
排煙風機檢測方法 瀏覽:28
家裡檢測溶液酸鹼性的方法 瀏覽:899
四千除以八豎式計算方法 瀏覽:238
如何驗證真愛的方法 瀏覽:616
原癌基因抑癌基因常用的檢測方法 瀏覽:460
最簡單的編織手套的方法 瀏覽:809
護理教學原則及方法案例分析 瀏覽:42
蛋雞防寒最好的方法是什麼 瀏覽:257
川貝水晶梨食用方法 瀏覽:64
有什麼解決不合理用葯的方法 瀏覽:191
腎衰竭失眠有什麼方法治療 瀏覽:264
朴妝蛋蛋面膜使用方法 瀏覽:79
對開隱形紗窗門安裝方法視頻教程 瀏覽:752
用一根繩子測量井子的方法 瀏覽:698
水泥擦臉的正確方法 瀏覽:328
畢業論文問卷調查的方法論分析 瀏覽:67