
文章目錄
- 前言(先扯幾句家常)
- 泛型!
- 1. 認識Java中的泛型使用
- 2. 泛型特性
- 3. 泛型使用
- 4. 通配符
- 5. 完事
- 結語
前言(先扯幾句家常)
個人主張自學,但是也不能忘記了討論的重要性,但是由于平時不z怎么看CSDN,所以呢我這邊搞了一個小圈子,歡迎大家來哦~可以暢所欲言呀——java小圈子
不過CSDN評論區我也會不定時觀看的,所以非強制性要求哦
這周真是產量低下,實在汗顏,怎么說這一周呢,,,
周一周二學校開運動會
我還想著我是文體部的,應該很輕松,誰知道天天那么多事情,真是累的要死哦
周二下午我還參加的有比賽專案,三級跳遠,進了決賽,對于我這老胳膊老腿來說,真是遭不住哦
周三又被我們創新創業作業室拉過去參加比賽
拖著我那腰酸背痛的身體,我的天吶,確實需要鍛煉鍛煉了,,突然就跑題了
啊,就是這樣導致我斷斷續續的更了兩篇
周五又臨近放假,周六做了一天的車,周日到家幫忙干了一天的活,確實是累的遭不住,八九點就睡了
今天算是頹廢了一下午,上午也是去忙去了
哎,生活不易啊,這周這么搞,我應該已經涼透了

但是還是要堅持繼續寫的!!!!!!
學習必不可退縮!沖沖沖!!!

泛型!
當我第一次聽到這個東西的時候,我是這樣想的:
泛型?什么東西,聽起來感覺挺高大上的,我能學會嗎?我能理解嗎?我會不會栽在這里?
是啊,聽起來就蠻牛,蠻高大上的嘛,但是你需要仔細理解,啊不對,說得簡單點,你就把這倆字拆開來解讀不就完事了嗎?
泛型:
泛:廣泛
型:型別
對,其實就是這樣,是不是瞬間感覺
好嘛,這才哪跟哪啊,你要是這樣想,就對了!哈哈,不要覺的他好難好難的
理解最重要,我一向反對死記硬背的學習,所以我也不抄別人的看著好高大上的解釋,除了讓人望而生畏之外,對理解并沒有什么卵用,
像他們說的什么引數化型別,那玩意真的能讓很多人理解嗎?
并不能,至少在我看到這個的時候,是無法很清晰的理解到的,既然我做不到,那么根據某定理(想不起來名字了),那么肯定也有人和我一樣,無法很明白的,很清晰的理解這個東西,
那我就按照我的理解來說了
1. 認識Java中的泛型使用
那么我們先來看看這個代碼
ArrayList<String> b = new ArrayList<>();
之前說過,哪個小小的尖括號里面是放型別的,可以是任意的參考型別
何為參考型別:字串,陣列,介面,類,,,
那么我需要整型的怎么辦,之前也說過,裝箱,裝箱為Integer這種型別的就可以了
好,言歸正傳,這個代碼我們很熟悉,創建一個ArrayList集合物件嘛,形式我們也很熟悉,類的實體化物件嘛,
但是你有沒有發現,這個格式貌似和我們自己定義的類的實體化物件的格式不太一樣?
那么再來看看我們之前創建的Girl類的實體化
Girl girl = new Girl();
大致一看,還是差不多的:
類名 自定義名字 = new 類名;
但是仔細一看就不一樣了,尖括號,對,我們創建的Girl中沒有尖括號,
那么這個尖括號是干嘛的呢?聯想我們的這個博客,你是不是若有所思?難不成,這就是泛型?
對啊,這就是泛型啊,這就是Java中的具體使用,用來廣泛特指別的型別
說到這里,有沒有一種恍然大悟的感覺

2. 泛型特性
泛型型別在邏輯上看成是多個不同的型別,實際上都是相同的基本型別
3. 泛型使用
相信經過上面的解釋,你已經對泛型有所理解,那么來看看我們怎么使用泛型吧
先來看看如何定義一個泛型類
class 類名<泛型型別(一般使用T,K,V,N,也可以使用別的)>{
public 泛型型別 變數名; //初始化一個泛型型別的變數
public 泛型型別 方法名(泛型型別 變數名){
代碼塊;
}
}
應該,很清晰吧,都是之前學過的東西了
那么來看看怎么使用的吧!
這次測驗還是我們的妹子類
由于英文不好,主類名就用拼音了,見諒見諒
public class fanxing {
public static void main(String[] args) {
Gril5_3<String> text = new Gril5_3<>("測驗成功");
text.setT("hello");
String a = text.getT();
System.out.println(a);
}
}
class Gril5_3<T>{
private T t;
public Gril5_3(T t){
this.t = t;
System.out.printf("測驗泛型ddd %s",t);
System.out.println();
}
void setT(T t){
this.t = t;
}
T getT(){
return t;
}
}
應該沒什么問題吧,set和get用于封裝,使用泛型型別替代了原來的型別,定義屬性的時候也使用泛型型別替代
運行結果:

好好好,好啊,我們成功了!
那么需要注意的是,我們在實體化前,我們的型別T可以是任意型別的,意思就是,你定義是什么型別,他就是什么型別的,
4. 通配符
通配符,就是字面意思,可以通用的符號
不得不贊一句,見名知意的感覺是真的好,以后我們寫代碼的類啦,介面啦,方法啦,一定要記得這樣命名,見名知意!!!
一般用于集合中傳遞資料時
- 當使用泛型類或者泛型介面,泛型的型別你自己都不確定的時候,可以通過通配符<?>表示,一旦程式當中使用泛型的通配符后,只能使用Object類中的共性的方法,集合中元素本身方法無法使用
此時只能接收資料,不能往集合當中存盤資料 - 通配符的高級使用—受限泛型(泛型的上限和下限)
上限:格式: 型別名稱 <? extends 類名> 物件名稱 意義:只能接受該型別及其子類
下限:格式:型別名稱 <? super 類名> 物件名稱 意義:只能接受該型別及其父類
示例說明
public static void main(String[] args) {
Collection<Integer> list01 = new ArrayList<Integer>();
Collection<String> list02 = new ArrayList<Integer>();
Collection<Number> list03 = new ArrayList<Integer>();
Collection<Object> list04 = new ArrayList<Integer>();
}
// 定義方法 用于接收任意的資料型別
public static void getElement(Collection<?> coll) {//.....}
// 定義方法 用于接收數字型別 Number型別或者Number的子類Integer等
pubic static void getElement(Collection<? extends Number> coll){//...}
// 定義方法 用于接收Number型別及其父類的型別
public static void getElement(Collection<? super Number> coll) {//....}
5. 完事
泛型就說這么多,相信大家對泛型也有了自己的認識,想去深挖的話,還是別來看我的博客
建議找大佬的博客鉆研鉆研一起進步一起學習!
結語
說了這么多,思來想去還是決定打波廣告!
我搞了一個群,歡迎一起進步一起學習,一起加油!—— java小圈子
打完廣告我就跑,真刺激

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/282911.html
標籤:java
