Effective Java之列表由于数组(二十五)
生活随笔
收集整理的這篇文章主要介紹了
Effective Java之列表由于数组(二十五)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
列表和數組的區別
1.數組是協變的(convariant),如果Sub是Super的子類型,那么數組類型Sub[]就是Super[]的子類型。
泛型確實不可變的,List< Sub >不是List< Super >的子類型。
2、數組是具體化的(reified),因此數組在運行時才知道并檢查它們的元素類型約束。
泛型則是通過擦除(erasure)來實現,因此泛型只在編譯時強化它們的類型信息,并在運行時丟棄(或者擦除)它們的元素類型約束。擦除就是使泛型可以與沒有使用泛型的代碼隨意進行互用。
Object[] objectArray = new Long[1]; objectArray[0] = "hello world"; //Throws java.lang.ArrayStoreException //Won't compile! 不被允許:Type mismatch: cannot convert from LinkedList<Long> to List<Object> List<Object> list = new LinkedList<Long>();總結:對于運行時錯誤和編譯期錯誤,我們當然選擇編譯器異常,通常遇到想要創建一個泛型數組的問題是,優先選擇List< T >,而不是E< T >。
這樣可能會損失一點性能和簡潔性,但是換來的是更高的類型安全性和互用性。
總結
以上是生活随笔為你收集整理的Effective Java之列表由于数组(二十五)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Effective Java之消除受检警
- 下一篇: Effective Java之利用有限制