Java泛型用于方法,类和接口
什么是泛型?
型就是數據類型參數化。就是說原本定死的數據類型像方法中的形參一樣,數據是不確定的,使用的時候由人傳進去,泛型就是這樣,數據類型不確定了。使用的時候再確定就可以了。
泛型的特點
- 是JDK1.5的新特性
- 泛型可以使用在方法上,類上,接口上
- 泛型變量可以理解為是某種數據類型的占位符
- 泛型變量也可以理解為是某種數據類型的變量
- 泛型變量的命名規則,只要是合法的標識符就可以,一般使用一個大寫字母標識
好了,講了一點點,現在來看一下泛型實際運用是怎么樣的。實際上呢泛型是一個很好用的東西,例如我們都會用的ArrayList鏈表? ?ArrayList<T> 鏈表名 = new ArrayList;里面的? T? 就是泛型的使用方法,大家有興趣可以去看一下ArrayList的源代碼。
泛型在方法中的用法
定義方法:修飾符 <T> 返回值類型 方法名(參數列表){}
public static void main(String[] args) {String s = "123456";
int i = 123456;
String str = test01(s);Integer in = test01(i);}public static <T> T test01(T param){//<T>這個是確定泛型的標識符。。后面那個T是返回值類型!!!一定要記住return param;}
你看這樣子就可以將不同數據類型的數據傳給同一個方法,就不需要方法重寫了,減少很多工作量的說。然后注意一點,那就是泛型不能使用基本數據類型。只能使用基本數據類型的包裝類,比如ArrayList,我們放int類型時是怎么放的???ArrayList<Integer> arr = new ArrayList()<>;在建對象使用泛型時注意一下
泛型在類中的用法
說實在的,類為什么類也要定義成泛型我也沒怎么想到,確實覺得感覺有點好處,又感覺沒什么好處。我有時間去查看一下吧。
泛型類的定義格式:
泛型類定義格式? ? class 類名<T>{? ?//可以將泛型變量T當成一種數據類型使用? }
public class changeArr<T>{//定義泛型類public static <T> void reverse(T[] arr){//里面定義一個泛型方法for (int i = 0,j = arr.length - 1; i < j ; i++,j--) {T temp = arr[i];arr[i] = arr[j];arr[j] = temp;}} }public static void main(String[] args){Integer[] arr = {1,3,4,7,9} ;String[] strs = {"a","b","c"}; changeArr<Integer> arrays01 = new changeArr<>(); //使用泛型類創建,創建的時候指定數據類型arrays01.reverse(arr);//使用泛型方法
System.out.println(arrays02.toString(arr)); changeArr<String> arrays02 = new changeArr<>();arrays02.reverse(strs);System.out.println(arrays02.toString(strs));//好煩啊,為什么這個粘貼復制自己的都會格式亂掉}
emmmm,因為這個用的比較少,所有感覺沒有什么要注意的。。。
泛型定義接口
這個有老哥和我說很重要,我感受了一下,確實很重要的說!!!
泛型接口的定義格式? interface 接口<T>{ //在接口中可以把T當成一種數據類型使用 }
泛型接口的實現方式
方式1:實現接口的同時指定泛型變量的具體數據類型
方式2:實現接口時不指定泛型變量的具體數據類型,將實現類定義為泛型類,由創建實現類對象者指定泛型變量的具體數據類型//為什么說重要的原因,就是這個!!!
特地說多一點,因為實際操作中我們會遇到很多東西,但其實有一些東西都是重復的,就比如在ssm中的超多實現類,其實比如通過id查找該物品什么的,每個表的實現定義一個,現在有了泛型就不用那么慘了,直接調用,反正就算是類的數據類型也可以使用,很爽的說。。。果然師兄說的對,寫接口是最痛苦的。用接口是最舒服的!!!
?
class Student{}public interface Dao<T>{//泛型接口public void save(T t);public void delete(int id);public void update(T t);public void find(int id);}//實現層代碼 指定實現類具體數據類型public class StudentDao implements Dao<Student>{//對四個類進行重寫}//實現層代碼 不指定實現類具體數據類型,比較靈活public class BaseDao<T> implements Dao<T>{//對四個類進行重寫}//main中實現public static void main(String[] args) {BaseDao<Student> baseDao1 = new BaseDao<>();}//格式懶的調了,大家湊合著看吧感受一下就就知道了,這個是真滴好用
轉載于:https://www.cnblogs.com/phoenlix/p/9439318.html
總結
以上是生活随笔為你收集整理的Java泛型用于方法,类和接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jquery 快速入门二
- 下一篇: Spring Boot-springbo