溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Java中List add添加不同類(lèi)型元素的講解

發(fā)布時(shí)間:2020-10-23 02:08:00 來(lái)源:腳本之家 閱讀:1165 作者:雙斜杠少年 欄目:編程語(yǔ)言

問(wèn)題:

今天看java的list ,list后面的<> 里面可以填多種類(lèi)型,但是如果不填寫(xiě)類(lèi)型那就默認(rèn)為 Object 類(lèi)型。 所有我門(mén) add 到 list 里的 數(shù)據(jù)都會(huì)被轉(zhuǎn)換成 Object 類(lèi)型。

而當(dāng)我門(mén)再?gòu)膌ist 中取出該數(shù)據(jù)時(shí),就會(huì)發(fā)現(xiàn)數(shù)據(jù)類(lèi)型已經(jīng)改變。

解答

java集合中 能添加不同類(lèi)型的元素其實(shí)不同類(lèi)型的元素,只是地一定層次是不同元素,根本上都繼承于Object類(lèi),本質(zhì)上還是同一類(lèi)型的元素。

List<Object> list = new ArrayList<Object>();
list.add("abc");
list.add(123);
list.add(new HashMap<Integer,String>());

都可以。

或者說(shuō)你聲明集合時(shí),不聲明它的泛型類(lèi)型如:

List list = new ArrayList();

它默認(rèn)就是Object泛型的,跟上面的List<Object>效果一樣。

Object類(lèi)是所有Java類(lèi)的祖先。每個(gè)類(lèi)都使用 Object 作為超類(lèi)。所有對(duì)象(包括數(shù)組)都實(shí)現(xiàn)這個(gè)類(lèi)的方法。

在不明確給出超類(lèi)的情況下,Java會(huì)自動(dòng)把Object作為要定義類(lèi)的超類(lèi)。

可以使用類(lèi)型為Object的變量指向任意類(lèi)型的對(duì)象。

在Java中由于繼承和向上轉(zhuǎn)型,子類(lèi)可以非常自然地轉(zhuǎn)換成父類(lèi),但是父類(lèi)轉(zhuǎn)換成子類(lèi)則需要強(qiáng)制轉(zhuǎn)換。因?yàn)樽宇?lèi)擁有比父類(lèi)更多的屬性、更強(qiáng)的功能,所以父類(lèi)轉(zhuǎn)換為子類(lèi)需要強(qiáng)制。那么,是不是只要是父類(lèi)轉(zhuǎn)換為子類(lèi)就會(huì)成功呢?其實(shí)不然,他們之間的強(qiáng)制類(lèi)型轉(zhuǎn)換是有條件的。

由于以上的原因 我門(mén)存入 list 的不同類(lèi)型的對(duì)象都可以 自然的轉(zhuǎn)換成Object 類(lèi)型,但是取出的時(shí)候都需要強(qiáng)制轉(zhuǎn)換。

示例

Java中List add添加不同類(lèi)型元素的講解

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)億速云的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI