Java中List add添加不同類型元素的講解
問題:
今天看java的list ,list后面的<> 里面可以填多種類型,但是如果不填寫類型那就默認(rèn)為 Object 類型。 所有我門 add 到 list 里的 數(shù)據(jù)都會被轉(zhuǎn)換成 Object 類型。
而當(dāng)我門再從list 中取出該數(shù)據(jù)時,就會發(fā)現(xiàn)數(shù)據(jù)類型已經(jīng)改變。
解答
java集合中 能添加不同類型的元素其實不同類型的元素,只是地一定層次是不同元素,根本上都繼承于Object類,本質(zhì)上還是同一類型的元素。
List<Object> list = new ArrayList<Object>(); list.add("abc"); list.add(123); list.add(new HashMap<Integer,String>());
都可以。
或者說你聲明集合時,不聲明它的泛型類型如:
List list = new ArrayList();
它默認(rèn)就是Object泛型的,跟上面的List<Object>效果一樣。
Object類是所有Java類的祖先。每個類都使用 Object 作為超類。所有對象(包括數(shù)組)都實現(xiàn)這個類的方法。
在不明確給出超類的情況下,Java會自動把Object作為要定義類的超類。
可以使用類型為Object的變量指向任意類型的對象。
在Java中由于繼承和向上轉(zhuǎn)型,子類可以非常自然地轉(zhuǎn)換成父類,但是父類轉(zhuǎn)換成子類則需要強(qiáng)制轉(zhuǎn)換。因為子類擁有比父類更多的屬性、更強(qiáng)的功能,所以父類轉(zhuǎn)換為子類需要強(qiáng)制。那么,是不是只要是父類轉(zhuǎn)換為子類就會成功呢?其實不然,他們之間的強(qiáng)制類型轉(zhuǎn)換是有條件的。
由于以上的原因 我門存入 list 的不同類型的對象都可以 自然的轉(zhuǎn)換成Object 類型,但是取出的時候都需要強(qiáng)制轉(zhuǎn)換。
示例
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
關(guān)于HashSet與HashMap的區(qū)別及說明
這篇文章主要介紹了關(guān)于HashSet與HashMap的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07