實(shí)例分析Java泛型
泛型:即“參數(shù)化類型”,所操作的數(shù)據(jù)類型被指定為一個(gè)參數(shù)。該機(jī)制允許程序員在編譯時(shí)檢測(cè)到非法的類型。
不使用泛型與使用泛型的區(qū)別
不使用泛型代碼:
import java.util.ArrayList; import java.util.List; public class NoGenerics { public static void main(String[] args){ List arrayList=new ArrayList(); arrayList.add("1"); //字符類型 arrayList.add(1); //數(shù)字類型 for(int i=0;i<arrayList.size();i++){ String s=(String) arrayList.get(i); //強(qiáng)制轉(zhuǎn)換,但無(wú)法轉(zhuǎn)換為字符類型,且編譯不報(bào)錯(cuò) System.out.println(s); } } }
使用泛型代碼:
import java.util.ArrayList; import java.util.List; public class Generics { public static void main(String[] args){ List<String> stringList = new ArrayList<String>(); List<Integer> integerList = new ArrayList<>(); //簡(jiǎn)化 stringList.add("1"); // stringList.add(1); //編譯報(bào)錯(cuò),只能添加字符類型 integerList.add(1); // integerList.add("1"); //編譯報(bào)錯(cuò),只能添加數(shù)字類型 for(int i=0;i<stringList.size();i++){ String s=stringList.get(i); System.out.println(s); } for(int j=0;j<integerList.size();j++){ int i=integerList.get(j); System.out.println(i); } } }
注意:在jdk版本較高中,List<String> stringList = new ArrayList<String>();可以簡(jiǎn)寫為L(zhǎng)ist<String> stringList = new ArrayList<>();
泛型的優(yōu)點(diǎn):
1、類型安全;例如List<String> 就只能插入String類型,簡(jiǎn)單來(lái)說(shuō)就是限制類型。
2、消除強(qiáng)制類型轉(zhuǎn)換;使得代碼更加可讀,并且減少了出錯(cuò)機(jī)會(huì)。
3、潛在的性能收益;泛型為較大的優(yōu)化帶來(lái)可能,沒有泛型的話,程序員會(huì)指定這些強(qiáng)制類型轉(zhuǎn)換。
注意:
1、泛型的類型參數(shù)只能是類類型(包括自定義類),不能是簡(jiǎn)單類型。例如List<String,Person>
2、泛型的類型參數(shù)可以有多個(gè),例如List<String,Integer>
相關(guān)文章
java開發(fā)RocketMQ生產(chǎn)者高可用示例詳解
這篇文章主要為大家介紹了java開發(fā)RocketMQ生產(chǎn)者高可用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08mybatis mapper.xml獲取insert后的自增ID問(wèn)題
這篇文章主要介紹了mybatis mapper.xml獲取insert后的自增ID問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05springmvc @RequestBody String類型參數(shù)的使用
這篇文章主要介紹了springmvc @RequestBody String類型參數(shù)的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10JavaEE中關(guān)于ServletConfig的小結(jié)
ServletConfig是針對(duì)特定的Servlet的參數(shù)或?qū)傩?。ServletConfig是表示單獨(dú)的Servlet的配置和參數(shù),只是適用于特定的Servlet。從一個(gè)servlet被實(shí)例化后,對(duì)任何客戶端在任何時(shí)候訪問(wèn)有效,但僅對(duì)本servlet有效,一個(gè)servlet的ServletConfig對(duì)象不能被另一個(gè)servlet訪問(wèn)2014-10-10Java中Comparable與Comparator的區(qū)別解析
這篇文章主要介紹了Java中Comparable與Comparator的區(qū)別解析,實(shí)現(xiàn)Comparable接口,重寫compareTo方法,一般在實(shí)體類定義的時(shí)候就可以選擇實(shí)現(xiàn)該接口,提供一個(gè)默認(rèn)的排序方式,供Arrays.sort和Collections.sort使用,需要的朋友可以參考下2024-01-01SpringBoot集成Mybatis過(guò)程步驟圖解
這篇文章主要介紹了SpringBoot集成Mybatis過(guò)程步驟圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Spring?Data?Elasticsearch?5.0.x修改數(shù)據(jù)后無(wú)法立即刷新解決方法示例
這篇文章主要為大家介紹了Spring?Data?Elasticsearch?5.0.x修改數(shù)據(jù)后無(wú)法立即刷新解決方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08