1. 程式人生 > 實用技巧 >泛型和泛型的萬用字元應用

泛型和泛型的萬用字元應用

泛型以及萬用字元

當使用泛型類或者泛型介面,傳遞的資料中,泛型的型別不確定,可以通過萬用字元表示<?>表示.一旦程式當中使用泛型萬用字元後,只能使用Object類中共性的方法. 集合中元素自身型別的方法無法使用.(這是一種多型的寫法,)

泛型作為形參寫在方法引數列表內

舉個栗子:

泛型應用在類中
public class Pue<E>{
   private E age;
public void set(E name){
  this.name=name;
}
}
當我們使用泛型修飾一個類的時候,我們大多使用泛型來修飾成員變數和get  set方法以及構造方法
 泛型應用在方法中
public static<E> void methods(E age){ System.out.println(E.getClass()); } 當我們使用泛型修飾一個類的時候,在類的修飾符後面加上泛型的修飾符號<隨意的符號就當定義變數>然後就可以在方法內使用泛型來修飾引數或者區域性變數,

備註;當我們呼叫了使用了帶有泛型的方法或者,類,這個泛型一定會被固定.必須是確定的型別,輸入的是什麼引數,泛型會自動成為相同的型別.

萬用字元,當我們需要對泛型進行限制的時候,java為我們提供了一個符號,萬用字元來對泛型進行限制,簡稱

受限泛型

受限泛型分為兩種限制方式: 上限extends 下限super

定義格式

//定義方法 此時可以接受任意的資料型別
public static void getElement(Collection<?> coll){//...}
//定義方法,此時我只讓方法接收數字型別 Number型別和Number的子類型別
public static void getElement(Collection<? extends Number> coll){//....}
//定義方法,此時我只讓接收Number型別及其以上的型別
public static void getElement(Collection<? super Number> coll){//
...}

萬用字元不能直接用來定義集合的資料型別,程式會混亂,並且資料型別被定義了萬用字元的集合無法儲存任何型別的資料

栗子:

ArrayList<?> list= new ArrayList<>();

上面這個集合現在無法儲存任何的資料.