實(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)換,但無法轉(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)單來說就是限制類型。
2、消除強(qiáng)制類型轉(zhuǎn)換;使得代碼更加可讀,并且減少了出錯(cuò)機(jī)會(huì)。
3、潛在的性能收益;泛型為較大的優(yōu)化帶來可能,沒有泛型的話,程序員會(huì)指定這些強(qiáng)制類型轉(zhuǎn)換。
注意:
1、泛型的類型參數(shù)只能是類類型(包括自定義類),不能是簡(jiǎn)單類型。例如List<String,Person>
2、泛型的類型參數(shù)可以有多個(gè),例如List<String,Integer>
相關(guān)文章
java利用DFA算法實(shí)現(xiàn)敏感詞過濾功能
在最近的開發(fā)中遇到了敏感詞過濾,便去網(wǎng)上查閱了很多敏感詞過濾的資料,在這里也和大家分享一下自己的理解。下面這篇文章主要給大家介紹了關(guān)于java利用DFA算法實(shí)現(xiàn)敏感詞過濾功能的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-06-06
java+selenium實(shí)現(xiàn)滑塊驗(yàn)證
現(xiàn)在越來越多的網(wǎng)站都使用采用滑塊驗(yàn)證來作為驗(yàn)證機(jī)制,用于判斷用戶是否為人類而不是機(jī)器人,本文就將利用java和selenium實(shí)現(xiàn)滑塊驗(yàn)證,希望對(duì)大家有所幫助2023-12-12
springboot集成schedule實(shí)現(xiàn)定時(shí)任務(wù)
在項(xiàng)目開發(fā)過程中,我們經(jīng)常需要執(zhí)行具有周期性的任務(wù)。通過定時(shí)任務(wù)可以很好的幫助我們實(shí)現(xiàn)。本篇文章主要介紹了springboot集成schedule實(shí)現(xiàn)定時(shí)任務(wù),感興趣的小伙伴們可以參考一下2018-05-05
Java?Stream如何將List分組成Map或LinkedHashMap
這篇文章主要給大家介紹了關(guān)于Java?Stream如何將List分組成Map或LinkedHashMap的相關(guān)資料,stream流是Java8的新特性,極大簡(jiǎn)化了集合的處理操作,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
MyBatis-plus實(shí)現(xiàn)逆向生成器
本文主要介紹了MyBatis-plus實(shí)現(xiàn)逆向生成器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
SpringSecurity自定義AuthenticationProvider無法@Autowire的解決
這篇文章主要介紹了SpringSecurity自定義AuthenticationProvider無法@Autowire的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
SpringBoot項(xiàng)目中使用Groovy腳本的示例代碼
本文主要介紹了SpringBoot項(xiàng)目中使用Groovy腳本的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08

