<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
泛型概述
泛型:是JDK5中引入的特性,可以在編譯階段約束操作的資料型別,並進行檢查。 泛型的格式:<資料型別>; 注意:泛型只能支援參照資料型別。 集合體系的全部介面和實現類都是支援泛型的使用的。
泛型的好處:
統一資料型別。 把執行時期的問題提前到了編譯期間,避免了強制型別轉換可能出現的異常,因為編譯階段型別就能確定下來。
泛型可以在很多地方進行定義:
類後面 --> 泛型類 方法申明上 --> 泛型方法 介面後面 --> 泛型介面
泛型類的概述
定義類時同時定義了 泛型的類 就是 泛型類。 泛型類的格式:修飾符 class 類名<泛型變數(只能是參照型別)>{ } 範例:public class MyArrayList<T> { } 此處泛型變數T可以隨便寫為任意標識,常見的如E、T、K、V等。
作用:編譯階段可以指 定資料型別**(必須是參照型別)**,類似於集合的作用。
課程案例導學
模擬ArrayList集合自定義一個集合MyArrayList集合,完成新增和刪除功能的泛型設計即可。
問題1:泛型類的核心思想?
把出現泛型變數的地方全部替換成傳輸的真實資料型別
問題2:泛型類的作用?
編譯階段約定操作的資料的型別,類似於集合的作用。
泛型方法的概述
定義方法時同時定義了 泛型的方法 就是 泛型方法。 泛型方法的格式:修飾符 <泛型變數> 方法返回值 方法名稱(形參列表){} 範例: public <T> void show(T t) { // <T>表示引數的型別,一般在public或者static的後面 } 作用:方法中可以使用泛型接收一切實際型別的引數,方法更具備通用性。
課程案例導學
給你任何一個型別的陣列,都能返回它的內容。也就是實現Arrays.toString(陣列)的功能! public class GeneticDemo { public static void main(String[] args) { String[] names = {"lushimeng", "yangyinyu", "wangliang", "xigua", "xiangjia"}; printArray(names); // 把printArray方法中出現泛型的地方全部變化為String型別 Character[] character = {'2', 'd', 'd', 'r'}; printArray(character); // 把printArray方法中出現泛型的地方全部變化為Character型別 Integer[] ages = {23, 435, 56, 67, 67}; printArray(ages); // 把printArray方法中出現泛型的地方全部變化為Integer型別 } public static <T> void printArray(T[] array){ if(array != null){ StringBuilder sb = new StringBuilder("["); for(int i = 0; i < array.length; i++){ sb.append(array[i]).append(i != array.length - 1 ? ", ": ""); // StringBuilder的鏈式程式設計 } sb.append("]"); System.out.println(sb); }else{ System.out.println(array); } } }
問題1、泛型方法的核心思想:
把出現泛型變數的地方 全部替換 成傳輸的真實資料型別
問題2、泛型方法的作用
方法中可以使用泛型接收一 切實際型別的引數,方法更具備通用性
泛型介面的概述
使用了泛型定義的介面就是泛型介面。 泛型介面的格式:修飾符 interface 介面名稱<泛型變數>{ } 範例: public interface Data<E>{}
課程案例導學
教務系統,提供一個介面可約束一定要完成資料(學生,老師)的增刪改查操作
問題1、泛型介面的作用
泛型介面可以約束實現類,實現類可以在實現介面的時候傳入自己操作的資料型別這樣重寫的方法都將是針對於該型別的操作。
萬用字元:?
? 可以在「使用泛型」的時候代表 一切型別。 E T K V 是在定義 泛型 的時候使用的。
泛型萬用字元:案例導學
開發一個極品飛車的遊戲,所有的汽車都能一起參與比賽。 特別注意:雖然BMW和BENZ都繼承了Car但是ArrayList<BMW>和ArrayList<BENZ>與ArrayList<Car>沒有關係的!! import java.util.ArrayList; public class GenericDemo { public static void main(String[] args) { ArrayList<BENZ> benzs = new ArrayList<>(); benzs.add(new BENZ()); benzs.add(new BENZ()); benzs.add(new BENZ()); go(benzs); // ? extends Car 為Car的子類都可以傳入進去 ArrayList<BMW> bmws = new ArrayList<>(); bmws.add(new BMW()); bmws.add(new BMW()); bmws.add(new BMW()); go(bmws); ArrayList<Dog> dogs = new ArrayList<>(); dogs.add(new Dog()); // go(dogs); // 不滿足泛型上下限的條件 } public static void go(ArrayList<? extends Car> car){ // 上下限 } } class Dog{ } // 父類別 class Car{ } class BENZ extends Car{ } class BMW extends Car{ }
泛型的上下限:
? 可以在「使用泛型」的時候代表 一切型別。 ? extends Car: ?必須是Car或者其子類 泛型上限 ? super Car : ?必須是Car或者其父類別 泛型下限
本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45