開發(fā)出高質(zhì)量的系統(tǒng)
Jdk1.5中支持了泛型,在泛型的使用過程中經(jīng)常會遇到這樣一類問題
調(diào)用的地方
你會發(fā)現(xiàn)編譯錯誤,但是在我們的需求中Child的集合類是可以代替Parent的集合類來使用的,但是因為編譯器不認(rèn)同,因為兩個集合類之間沒有直接的繼承關(guān)系。如果實現(xiàn)呢?在Jdk1.5的Source中我們找到了答案,隨便找一個帶有泛型的類,點進(jìn)去可以看到泛型的定義,例如ArrayList<E>? HashMap<K,V>? 等等這里以ArrayList為例:注意addAll這個函數(shù)
ok,明白了,這個就是問號的作用.更改我們的函數(shù)
?
posted on 2007-02-10 23:46 dreamstone 閱讀(8673) 評論(2) 編輯 收藏 所屬分類: jdk相關(guān)
原來還有這個東西,學(xué)到了,贊 回復(fù) 更多評論
謝謝,解惑了,?號是為了解決java泛型中List<String> 不是List<Object>子類,這樣關(guān)系的權(quán)宜之計。網(wǎng)上查到的資料采用類型擦除這樣的設(shè)計,是為了向前兼容,所以有了上述違法LSP原則的設(shè)計。 回復(fù) 更多評論
Powered by: BlogJava Copyright © dreamstone