泛型和泛型的萬用字元應用
阿新 • • 發佈:2020-12-03
泛型以及萬用字元
當使用泛型類或者泛型介面,傳遞的資料中,泛型的型別不確定,可以通過萬用字元表示<?>表示.一旦程式當中使用泛型萬用字元後,只能使用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<>();
上面這個集合現在無法儲存任何的資料.