第三次学JAVA再学不好就吃翔(part83)--泛型类
學習筆記,僅供參考,有錯必糾
文章目錄
- 泛型類
- 泛型類概述
- 泛型方法
- 泛型接口
- 泛型通配符
泛型類
泛型類概述
泛型類,就是在定義類時,在類名后加一個尖括號:
public class 類名<泛型類型1,…> //一般泛型會設置為一個大寫字母,比如<T>等等需要注意的是,泛型類型必須是引用類型。在我們定義這個泛型時,該泛型并沒有明確的數據類型,但是當我們創建該類對象時,我們指定的泛型類型是啥(比如<Person>),這個泛型類型<T>就是啥。
比如,在我們創建ArrayList對象時,我們指定泛型為<Person>,那我們就只能在其中添加Person類型的元素,而不能添加其他類型的元素(比如String, Integer等等),否則會在編譯時報錯:
package com.guiyang.restudy3;import java.util.ArrayList; import java.util.Iterator;import com.guiyang.bean.Person;public class D1Genric {public static void main(String[] args) {ArrayList<Person> list = new ArrayList<Person>();list.add(new Person("張三", 23));list.add(new Person("李四", 24));Iterator<Person> it = list.iterator();while(it.hasNext()) {Person p = it.next();System.out.println(p.getName() + "..." + p.getAge());}} }- 自定義泛型類
泛型方法
- 泛型方法概述
具有一個或多個類型變量的方法,稱之為泛型方法。泛型方法可以存在于泛型類中,也可以存在于非泛型類中。泛型方法最好與類的泛型一致,如果不一致,需要在方法上聲明該泛型。
簡而言之,泛型方法,就是把泛型定義在方法上的方法。
- 定義格式
- 自定義泛型類,非靜態泛型方法,靜態泛型方法
注意!非靜態泛型方法的泛型可以與類的泛型類型一致,也可以不一致。但是靜態泛型方法的泛型類型必須與類的泛型類型不一致,否則,會在編譯時報錯。(媽呀,這句話好繞口)
類泛型 <Q>會在Tool類創建對象時被賦值,而靜態方法的泛型 <W>,會在我們用類名調用靜態方法時被賦值。
泛型接口
- 泛型接口概述
簡而言之,泛型接口就是把泛型定義在接口上的接口。
- 定義格式
- 自定義泛型接口
實現接口方式1(推薦):
interface Inter<T> {public void show(T t); }class Demo implements Inter<String> {@Overridepublic void show(String t) {System.out.println(t);}}我們創建Demo類實現了Inter接口,并制定泛型為 <String>,此時,我們重寫的show方法的泛型也應該是<String>,這是因為,Inter接口的show方法的泛型與Inter接口泛型是一致的,而Demo類實現了該接口,就應該遵從這種規則。
實現接口方式2(不推薦):
interface Inter<T> {public void show(T t); }class Demo<T> implements Inter<T> { //沒有必要在實現接口的時候給自己加泛型@Overridepublic void show(T t) {System.out.println(t);}}泛型通配符
- 泛型通配符是啥?
泛型通配符就是 <?>,如果在開發過程中,我們不確定右邊接收的泛型類型,則我們可以先將左邊的泛型類型用?來代替,這個?代表的就是任意類型,比如:
List<?> list = new ArrayList<String>(); //或 List<?> list = new ArrayList<Integer>();總結
以上是生活随笔為你收集整理的第三次学JAVA再学不好就吃翔(part83)--泛型类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 教学设计一等奖的六个特点
- 下一篇: 中班数学游戏教案《大转盘》反思