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