問題:
今天看java的list ,list后面的<> 里面可以填多種類型,但是如果不填寫類型那就默認為 object 類型。 所有我門 add 到 list 里的 數據都會被轉換成 object 類型。
而當我門再從list 中取出該數據時,就會發現數據類型已經改變。
解答
java集合中 能添加不同類型的元素其實不同類型的元素,只是地一定層次是不同元素,根本上都繼承于object類,本質上還是同一類型的元素。
1
2
3
4
|
list<object> list = new arraylist<object>(); list.add( "abc" ); list.add( 123 ); list.add( new hashmap<integer,string>()); |
都可以。
或者說你聲明集合時,不聲明它的泛型類型如:
1
|
list list = new arraylist(); |
它默認就是object泛型的,跟上面的list<object>效果一樣。
object類是所有java類的祖先。每個類都使用 object 作為超類。所有對象(包括數組)都實現這個類的方法。
在不明確給出超類的情況下,java會自動把object作為要定義類的超類。
可以使用類型為object的變量指向任意類型的對象。
在java中由于繼承和向上轉型,子類可以非常自然地轉換成父類,但是父類轉換成子類則需要強制轉換。因為子類擁有比父類更多的屬性、更強的功能,所以父類轉換為子類需要強制。那么,是不是只要是父類轉換為子類就會成功呢?其實不然,他們之間的強制類型轉換是有條件的。
由于以上的原因 我門存入 list 的不同類型的對象都可以 自然的轉換成object 類型,但是取出的時候都需要強制轉換。
示例
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
原文鏈接:https://blog.csdn.net/u012373815/article/details/53925127