淺談Java泛型通配符解決了泛型的許多詬病(如不能重載)
泛型:
package Java基礎(chǔ)增強(qiáng); import java.util.ArrayList; import java.util.List; import org.junit.Test; public class Test2 { @Test public void fun1(){ Object[] objects = new Object[10]; List list = new ArrayList(); String[] strings = new String[10]; List<String> list2 = new ArrayList<String>(); Object[] objects2 = new String[10]; //下面這句編譯不報(bào)錯(cuò),但是運(yùn)行包存儲(chǔ)異常錯(cuò)誤 objects2[0]=new Integer(100);//java.lang.ArrayStoreException: java.lang.Integer //下面這句編譯報(bào)錯(cuò) // List<Object> objects3 = new ArrayList<String>(); /* * 泛型引用和創(chuàng)建兩端,給出的泛型變量必須一致 * 虛擬機(jī)根本就不檢查泛型存不存在 */ } public void fun2(){ List<Integer> list = new ArrayList<Integer>(); this.print1(list);//1.print1方法只能是存儲(chǔ)Integer不能使Object //========================== List<Integer> list2 = new ArrayList<Integer>(); print(list2); List<String> list3 = new ArrayList<String>(); print(list3); } //2.泛型的方法不能重載,因?yàn)榉盒筒脸龊笫且粯拥姆椒?也就是如果一個(gè)方法里的形參的泛 //型的,則不能重載這個(gè)方法,即:即使方法名相同,參數(shù)不同也不行,但是普通方法可以重載(同名不同參) public void print1(List<Integer> objects){ } public void print2(List<String> strings){ } //但是后來(lái)聰明的程序員使用通配符解決了這個(gè)泛型不能重載的問(wèn)題 public void print(List<? extends Object> list){ } //但是下面兩個(gè)普通方法可以重載 public void a(String s){ } public void a(int i){ } }
泛型的方法不能重載,因?yàn)榉盒筒脸龊笫且粯拥姆椒?也就是如果一個(gè)方法里的形參的泛型的,則不能重載這個(gè)方法,即:即使方法名相同,參數(shù)不同也不行,但是普通方法可以重載(同名不同參)
那個(gè)HTML本來(lái)打算過(guò)渡到XML的,且中間有個(gè)XHTML,但是遷移了10年還沒(méi)過(guò)渡成功,結(jié)果HTML升級(jí)了,為HTML5,最終宣告遷移失敗,還是用HTML吧。
其實(shí)在JDK1.5以后加入泛型,雖然可以在編譯器檢查,但是也引入了許多詬病的,其實(shí)在編譯后,已經(jīng)擦出了泛型,也就是說(shuō)Java虛擬機(jī)不認(rèn)識(shí)泛型的。
以上就是小編為大家?guī)?lái)的淺談Java泛型通配符解決了泛型的許多詬病(如不能重載)的全部?jī)?nèi)容了,希望對(duì)大家有所幫助,多多支持腳本之家~
相關(guān)文章
Java編程數(shù)組中最大子矩陣簡(jiǎn)便解法實(shí)現(xiàn)代碼
這篇文章主要介紹了Java編程數(shù)組中最大子矩陣簡(jiǎn)便解法實(shí)現(xiàn)代碼,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Java實(shí)現(xiàn)拖拽文件上傳dropzone.js的簡(jiǎn)單使用示例代碼
本篇文章主要介紹了Java實(shí)現(xiàn)拖拽文件上傳dropzone.js的簡(jiǎn)單使用示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07Java實(shí)現(xiàn)將Object轉(zhuǎn)換成指定Class對(duì)象的操作代碼
這篇文章主要介紹了Java實(shí)現(xiàn)將Object轉(zhuǎn)換成指定Class對(duì)象的操作,在Java中,將Object轉(zhuǎn)換為指定類(lèi)型的Class對(duì)象實(shí)際上是兩個(gè)不同概念的操作,由于你提到的“將Object轉(zhuǎn)換成指定Class對(duì)象”可能有些混淆,我將分別展示這兩種操作的示例代碼,需要的朋友可以參考下2024-09-09SpringBoot實(shí)現(xiàn)文件斷點(diǎn)續(xù)傳功能詳解
在處理大文件傳輸或網(wǎng)絡(luò)不穩(wěn)定的情況下,文件斷點(diǎn)續(xù)傳功能顯得尤為重要,本文將詳細(xì)介紹如何使用Spring Boot實(shí)現(xiàn)文件的斷點(diǎn)續(xù)傳功能,需要的可以了解下2025-04-04Spring?Lifecycle?和?SmartLifecycle區(qū)別面試精講
這篇文章主要為大家介紹了Spring?Lifecycle和SmartLifecycle的區(qū)別面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10SpringBoot+Logback實(shí)現(xiàn)一個(gè)簡(jiǎn)單的鏈路追蹤功能
Spring Boot默認(rèn)使用LogBack日志系統(tǒng),并且已經(jīng)引入了相關(guān)的jar包,所以我們無(wú)需任何配置便可以使用LogBack打印日志。這篇文章主要介紹了SpringBoot+Logback實(shí)現(xiàn)一個(gè)簡(jiǎn)單的鏈路追蹤功能,需要的朋友可以參考下2019-10-10Javaweb項(xiàng)目啟動(dòng)Tomcat常見(jiàn)的報(bào)錯(cuò)解決方案
Java Web項(xiàng)目啟動(dòng)Tomcat時(shí)可能會(huì)遇到各種錯(cuò)誤,本文就來(lái)介紹一下Javaweb項(xiàng)目啟動(dòng)Tomcat常見(jiàn)的報(bào)錯(cuò)解決方案,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02