淺談Java泛型通配符處理了泛型的很多诟病(如不克不及重載)。本站提示廣大學習愛好者:(淺談Java泛型通配符處理了泛型的很多诟病(如不克不及重載))文章只能為提供參考,不一定能成為您想要的結果。以下是淺談Java泛型通配符處理了泛型的很多诟病(如不克不及重載)正文
泛型:
package Java基本加強;
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>();
/*
* 泛型援用和創立兩頭,給出的泛型變量必需分歧
* 虛擬機基本就不檢討泛型存不存在
*/
}
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.泛型的辦法不克不及重載,由於泛型擦出後是一樣的辦法,也就是假如一個辦法裡的形參的泛
//型的,則不克不及重載這個辦法,即:即便辦法名雷同,參數分歧也不可,然則通俗辦法可以重載(同名分歧參)
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){
}
}
泛型的辦法不克不及重載,由於泛型擦出後是一樣的辦法,也就是假如一個辦法裡的形參的泛型的,則不克不及重載這個辦法,即:即便辦法名雷同,參數分歧也不可,然則通俗辦法可以重載(同名分歧參)
誰人HTML原來盤算過渡到XML的,且中央有個XHTML,然則遷徙了10年還沒過渡勝利,成果HTML進級了,為HTML5,終究宣布遷徙掉敗,照樣用HTML吧。
其其實JDK1.5今後參加泛型,固然可以在編譯器檢討,然則也引入了很多诟病的,其其實編譯後,曾經擦出了泛型,也就是說Java虛擬機不熟悉泛型的。
以上就是小編為年夜家帶來的淺談Java泛型通配符處理了泛型的很多诟病(如不克不及重載)的全體內容了,願望對年夜家有所贊助,多多支撐~