这个泛型<E>中的E本身是自定义类吗

来源:3-2 栈的基本实现

tryl

2018-08-13

E内部构成是什么样的,为什么不直接用Object

写回答

1回答

liuyubobobo

2018-08-14

E 可以是任何类型,既可以是自定义的类型如Student,也可以是Java内部类型,如String,Integer等。


使用Object的缺点是,一方面,用户从我们设计的结构中取出元素,还需要手动强制类型转换;另一方面,后续的学习就会看到,对于一些数据结构的设计,我们还会对这个类型有约束(Java中称为bounded Type),当约束复杂到一定程度的时候,只能使用泛型表达。


泛型本身就是最标准的完成表示“任意类型”这一功能的方式。泛型这个语言机制本身,也是为了这种场景而创造的。如果打开JDK容器类的源码,全部是使用泛型完成的:)


当然,如果你愿意,也完全可以使用Object完成Stack的实现,这并不影响我们这个课程中所讲解的数据结构的底层原理的学习。如果有兴趣,我强烈建议你依据自己的思路实现一个属于自己的Stack,然后比较一下,使用Object和使用泛型,有什么区别。对语言的深刻理解就是在这种实验和比较中一点一点建立起来的:)


加油!:)

0
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程