java中的泛型

2021-09-01 09:09:35 字數 2062 閱讀 7276

泛型:我的理解就是它是用於篩選特定型別的資料或者物件。

一:泛型在集合中比較常見,因為其有以下兩個功能:

1、可以自動型別檢查 (在編譯期間)

2、可以自動型別轉換

二:

1、泛型類:

在類名後面使用 ,表示這個類是個泛型類, t 只是個佔位符,在初始化類的物件時候,傳入型別,

class genericstack 

public static void main (string args )

2、泛型介面:

在介面名後面使用< t>

inte***ce  comperable< t > 

} // 使用students 類實現這個介面,並指定使用string型別;

class students implenems comperable < string>

}

3、泛型方法:

泛型方法的宣告在方法的修飾詞後面加上

// 定義個乙個泛型方法,返回值為t型別,

public t gett ( int index)

// 定義乙個返回值是e的方法,傳入的是e 型別的陣列;

public e dindminval(e array )

4、泛型的上界: 使用extends關鍵字來宣告,

例如:

型別 t 或者t的父類必須實現 comparable 介面,並且實現comparato方法,並且這個介面的型別是 t。只有這樣,t 的例項之間才能相互比較大小。例如,在實際呼叫時若使用的具體類是 student,那麼 dog 必須 implements comparable

class person implements comparable 

@override

public int compareto(person o)

}class students extends person

}public class testalg3

}system.out.println(max);

return max;

}public static void main(string args);

string a=testalg3.findmax(s).name; // 呼叫比較大小方法

system.out.println(a);

}}

5、泛型的注意點:

1、不能new泛型型別的陣列 new t;

2、不能new泛型型別的物件? t obj = new t();

3、不能new 泛型型別的物件陣列。

object obj = new genericstack[10]; // 錯誤的,編譯不通過

4、不能用簡單型別作為泛型型別的引數

5、在static方法中,不能使用泛型型別的引數,因為:static方法不依賴物件,而型別的檢查需要物件。

三、泛型與繼承的關係

如果類a是類b的父類,但是在泛型中,泛型類a不是泛型類b的父類,而是並列關係。

例如 list< object>,list ,list< double> 、這三個是並列關係,沒有繼承關係。

四、 萬用字元: ?

list< object>,list ,list< double> 之間無繼承關係,可是他們都是list<?>的子類。

因為萬用字元的擦除機制,將當前類在編譯時擦除為object類,所以為其他類的父類;

例如寫乙個遍歷list的內容的方法

public static void printlist(arraylist<?> list) 

system.out.println();

}

JAVA中的泛型

1 泛型的基本作用 有時候建立乙個類,需要這個類中的屬性是object型別的,可以時而為string型別,時而為long型別等。比如乙個座標類point,橫座標和縱座標可能是整型,可能是浮點型,也可能是字串型別,需要輸出的結果如下 如下 package org.mole.t public class...

Java中的泛型

我們在定義的時候 就會確定資料型別 而泛型 就是是資料型別引數化 集合框架中沒有使用泛型和使用泛型的比較 沒有使用泛型 list li new linkedlist li.add 100 int x int li.get 0 system.out.println x 使用泛型 listli new ...

java中的泛型

如果乙個類裡只接受整數型別,那麼無法加入浮點型別 如果用object類物件取代整數型別,那麼編譯器就要正常判斷當前物件實際是哪一種型別,這會很浪費時間。如果用某個未指定的型別t取代整數型別,實際使用時再加入具體型別,那麼就可以處理多種型別的物件。例如 public class store publi...