日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第三次学JAVA再学不好就吃翔(part83)--泛型类

發布時間:2023/12/19 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第三次学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());}} }
  • 自定義泛型類
package com.guiyang.object;public class Tool<Q> {private Q q;public Q getobj() {return q;}public void setobj(Q q) {this.q = q;} }

泛型方法


  • 泛型方法概述

具有一個或多個類型變量的方法,稱之為泛型方法。泛型方法可以存在于泛型類中,也可以存在于非泛型類中。泛型方法最好與類的泛型一致,如果不一致,需要在方法上聲明該泛型。

簡而言之,泛型方法,就是把泛型定義在方法上的方法。


  • 定義格式
public <泛型類型> 返回類型 方法名(泛型類型 變量名)
  • 自定義泛型類,非靜態泛型方法,靜態泛型方法
package com.guiyang.object;public class Tool<Q> {private Q q;public Q getobj() {return q;}public void setobj(Q q) {this.q = q;}public<T> void show(T t) {System.out.println(t);}public static<W> void print(W w) {System.out.println(w);} }

注意!非靜態泛型方法的泛型可以與類的泛型類型一致,也可以不一致。但是靜態泛型方法的泛型類型必須與類的泛型類型不一致,否則,會在編譯時報錯。(媽呀,這句話好繞口)

類泛型 <Q>會在Tool類創建對象時被賦值,而靜態方法的泛型 <W>,會在我們用類名調用靜態方法時被賦值。


泛型接口


  • 泛型接口概述

簡而言之,泛型接口就是把泛型定義在接口上的接口。

  • 定義格式
public interface 接口名<泛型類型>
  • 自定義泛型接口

實現接口方式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)--泛型类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。