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