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