免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Java泛型思考

大家來看看這端程序,我最出發(fā)在csdn里

import java.util.ArrayList;
import java.util.List;

public class Fangxin {
   
    public static void main(String [] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        new Product().prt(list);
    }
   
}

class Product {
    public void prt(List<String> l) {
        System.out.println(l);
    }
}

=====================================

編譯器:不通過,說無法將Product中的prt(java.util.List<java.lang.String>)應(yīng)用于(java.util.List<java.lang.Integer>)

但改變代碼為這樣后

import java.util.ArrayList;
import java.util.List;
public class Fangxin {
   
    public static void main(String [] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        System.out.println();
        new Product().prt(list);
    }
   
}

class Product <T> {
    public void prt(List<String> l) {
        System.out.println(l);
    }
}

===========================================
編譯器:使用了未經(jīng)檢查或不安全的操作。
但能編譯通過并運行顯示
[1, 2]

 

原因是這樣的:(也要感謝kezhu2003(炎陽天)的幫助)

generic class Product<T>在JVM運行時是不存在的,Product叫原始類型,原始類型不是類型安全的.這個在編譯時是檢測不出的,運行時才報錯.
而當一個generic class使用原始類型時,其方法里的參數(shù)也就相應(yīng)的使用了原始形態(tài),如此列的java.util.List而不是java.util.List<String>
固new Product().prt(lt)時可以運行.

但product非generic class 則 prt(List<String> l)在jvm編譯時會對l進行類型檢查,

Lsit<String> l 是類型安全的,因為其用了generic collection

所以會報錯,編譯不通過。

 

所以建議大家多用泛型,這樣可以避免很多麻煩

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java泛型中?TKVE含義
java集合學(xué)習(xí)之List集合
JAVA基礎(chǔ) 之 Collections
Java中的排序(Comparable接口)
Java中 List的遍歷
[Java] ArrayList 類
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服