Re: [問題] 關於泛型 資料型態的疑問

作者: dreamnook (亞龍)   2015-05-27 18:56:57
※ 引述《noapaov (單身漢)》之銘言:
: 但我在使用泛型的時候, 範例如下
: ArrayList obj = new ArrayList<Integer>();
: 其實等同 ArrayList<Object> obj = new ArrayList<Integer>();
: 表示我可以加入任何的物件到obj裡面, 這時執行obj.add("test");
: 編譯器沒有報錯我的理解是因為我宣告的是ArrayList<Object> obj,
使用Eclipse
http://i.imgur.com/NrOe0bP.png
當用ArrayList<Object>來宣告時,Compiler Error
http://i.imgur.com/JYkk73H.png
在我看來ArrayList obj不等同ArrayList<Object> obj...囧>
: 但為什麼我在 "執行" obj.get(0)時, 不會有問題, 還是印出"test"
: 實際呼叫的物件回傳的不是Integer型態嗎?
我猜想是這樣
因為你在初始化階段並沒有定義ArrayList的Generic Type
所以New後面定的Type就跟假的一樣
http://i.imgur.com/FEqGNzt.png
或者編譯器把他視作這種的懶人寫法
http://i.imgur.com/exuHdBi.png
因而ArrayList取出來其實都是單純的Object
print時就預設使用Object.toString()函式處理掉了
如果加入一個沒有定義toString()的class會怎麼樣呢?
http://i.imgur.com/pvmSfvP.png
如果該class定義了toString()呢?
http://i.imgur.com/gL0TS90.png
大概就是這樣吧?

Links booklink

Contact Us: admin [ a t ] ucptt.com