您好,登錄后才能下訂單哦!
這篇“Java基礎泛型實例分析”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java基礎泛型實例分析”文章吧。
概述:
泛型是JDK5中引入的特性,它提供了編譯時類型安全檢測機制,該機制允許在編譯時檢測到非法的類型
本質上是參數化類型,也就是說所操作的數據類型被指定為一個參數
參數化類型:就是將類型由原來的具體的類型參數化,然后在使用/調用時傳入具體的參數
這種參數類型可以用在類、方法和接口中,分別被稱為泛型類、泛型方法、泛型接口
定義格式:
1.<類型>:指定一種類型的格式,這里的類型可以看作是形參
2.<類型1,類型2....>:指定多種類型的格式,多種類型之間由,隔開,這里的類型可以看作是形參
3.將來具體調用時給定的類型可以看作是實參,并且實參的類型只能是引用類型
泛型的優點:
1.把運行時期的問題提前到了編譯時期,更容易發現并處理
2.避免了強制類型轉換
定義格式:
格式:修飾符 class 類名<T>{}
范例:public class Gneneric{}
此處的T可以隨便寫為任意標識,常見的如T、E、K、V等形式的參數經常用于表示泛型
當一個類使用泛型后,類中的成員變量就不局限于一種類型了,只要在用的時候聲明一下是什么類型的即可
泛型類
public class Generic<T> { private T t; public T getT() { return t; } public void setT(T t) { this.t = t; } }
調用格式:
Generic<String>g=new Generic<String>(); g.setT("102");
格式: 修飾符 <類型>void 方法名(類型 參數){}
范例:public void show(T t){}
泛型方法:
public class Generic{ public <T> void show(T t){ System.out.println(t); } }
調用格式:
public class GenericDemo { public static void main(String[] args) { Generic g = new Generic(); g.show("張三"); g.show(18); g.show(true); } }
格式: 修飾符 interface 接口名 <T>{}
范例:public interface Gneneric{}
實現格式:
泛型接口
public interface Generic<T>{ void show(T t); }
泛型接口實現類
public class GenericImpl<T> implements Generic<T>{ @Override public void show(T t) { System.out.println(t); } }
測試類
public class GenericDemo { public static void main(String[] args) { GenericImpl<String> g1=new GenericImpl<String>(); g1.show("張三"); GenericImpl<Integer>g2=new GenericImpl<Integer>(); g2.show(12); GenericImpl<Boolean>g3=new GenericImpl<Boolean>(); g3.show(true); Generic<Double>g4=new GenericImpl<Double>(); g4.show(13.15); } }
為了表示各種泛型List的父類,可以使用類型通配符
1.List<?>:表示元素類型位置的List,它的元素可以匹配任何的類型
2.這種帶通配符的List僅代表它是各種泛型List的父類,并不能把元素添加到其中
如果說我們不希望List<?>是任何泛型List的父類,只希望它代表某一類泛型List的父類,可以使用類型通配符的上限
1.類型通配符的上限:<?extends 類型>
2.List<? extends Number>:他表示的類型是Number或者其子類型
同樣的我們也可以指定下限
1.類型通配符下限:<? super 類型>
2.List<? super Number>:表示的類型是Number或者其父類型
可變參數又稱參數個數可變,用作方法的形參出現,那么方法參數個數就是可變的了
格式:修飾符 返回值類型 方法名(數據類型... 變量名){}
范例:public static int sum(int...a){}
注意事項:
1.這里的變量是一個數組
2.如果一個方法有多個參數,并且包含可變參數,那么可變參數要放在最后
可變參數的使用:
Arrays工具類中有一個靜態方法
public static <T>List<T>asList(T...a):返回由指定數組支持的固定大小的列表
返回的集合不能做增刪操作,可以做修改操作
List接口中有一個靜態方法:
public static <E>List<E>of(E...elements):返回包含任意數量元素的不可變列表
返回的集合不能做增刪改操作
Set接口中有一個靜態方法:
public static <E>Set<E>of(E...elements):返回一個包含任意數量元素的不可變集合
返回的集合不能做增刪操作,沒有修改方法
再給元素時,不能給重復的元素
以上就是關于“Java基礎泛型實例分析”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。