淺談Java泛型通配符解決了泛型的許多詬病(如不能重載)
泛型:
package Java基礎(chǔ)增強;
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];
//下面這句編譯不報錯,但是運行包存儲異常錯誤
objects2[0]=new Integer(100);//java.lang.ArrayStoreException: java.lang.Integer
//下面這句編譯報錯
// List<Object> objects3 = new ArrayList<String>();
/*
* 泛型引用和創(chuàng)建兩端,給出的泛型變量必須一致
* 虛擬機根本就不檢查泛型存不存在
*/
}
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.泛型的方法不能重載,因為泛型擦出后是一樣的方法,也就是如果一個方法里的形參的泛
//型的,則不能重載這個方法,即:即使方法名相同,參數(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){
}
}
泛型的方法不能重載,因為泛型擦出后是一樣的方法,也就是如果一個方法里的形參的泛型的,則不能重載這個方法,即:即使方法名相同,參數(shù)不同也不行,但是普通方法可以重載(同名不同參)
那個HTML本來打算過渡到XML的,且中間有個XHTML,但是遷移了10年還沒過渡成功,結(jié)果HTML升級了,為HTML5,最終宣告遷移失敗,還是用HTML吧。
其實在JDK1.5以后加入泛型,雖然可以在編譯器檢查,但是也引入了許多詬病的,其實在編譯后,已經(jīng)擦出了泛型,也就是說Java虛擬機不認識泛型的。
以上就是小編為大家?guī)淼臏\談Java泛型通配符解決了泛型的許多詬病(如不能重載)的全部內(nèi)容了,希望對大家有所幫助,多多支持腳本之家~
相關(guān)文章
Java編程數(shù)組中最大子矩陣簡便解法實現(xiàn)代碼
這篇文章主要介紹了Java編程數(shù)組中最大子矩陣簡便解法實現(xiàn)代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
Java實現(xiàn)拖拽文件上傳dropzone.js的簡單使用示例代碼
本篇文章主要介紹了Java實現(xiàn)拖拽文件上傳dropzone.js的簡單使用示例代碼,具有一定的參考價值,有興趣的可以了解一下2017-07-07
Java實現(xiàn)將Object轉(zhuǎn)換成指定Class對象的操作代碼
這篇文章主要介紹了Java實現(xiàn)將Object轉(zhuǎn)換成指定Class對象的操作,在Java中,將Object轉(zhuǎn)換為指定類型的Class對象實際上是兩個不同概念的操作,由于你提到的“將Object轉(zhuǎn)換成指定Class對象”可能有些混淆,我將分別展示這兩種操作的示例代碼,需要的朋友可以參考下2024-09-09
SpringBoot實現(xiàn)文件斷點續(xù)傳功能詳解
在處理大文件傳輸或網(wǎng)絡(luò)不穩(wěn)定的情況下,文件斷點續(xù)傳功能顯得尤為重要,本文將詳細介紹如何使用Spring Boot實現(xiàn)文件的斷點續(xù)傳功能,需要的可以了解下2025-04-04
Spring?Lifecycle?和?SmartLifecycle區(qū)別面試精講
這篇文章主要為大家介紹了Spring?Lifecycle和SmartLifecycle的區(qū)別面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10
SpringBoot+Logback實現(xiàn)一個簡單的鏈路追蹤功能
Spring Boot默認使用LogBack日志系統(tǒng),并且已經(jīng)引入了相關(guān)的jar包,所以我們無需任何配置便可以使用LogBack打印日志。這篇文章主要介紹了SpringBoot+Logback實現(xiàn)一個簡單的鏈路追蹤功能,需要的朋友可以參考下2019-10-10

