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