建议采用的顺序是 List<T>、List<?>、List<Object>
来源:互联网 发布:vr网站源码 编辑:程序博客网 时间:2024/04/27 19:04
List<T>、List<?>、List<Object>这三者都可以容纳所有的对象,但使用的顺序应该是首选List<T>,次之List<?>,最后选择List<Object>,原因如下:
(1) List<T>是确定的某一个类型
List<T>表示的是List集合中的元素都为T类型,具体类型在运行期决定;List<?>表示 的是任意类型,与List<T>类似,而List<Object>则表示List集合中的所有元素为Object类 型,因为Object是所有类的父类,所以LiSt<Object>也可以容纳所有的类类型,从这一字面 意义上分析,List<T>更符合习惯:编码者知道它是某一个类型,只是在运行期才确定而已。
(2) List<T>可以进行读写操作
List<T>可以进行诸如add、remove等操作,因为它的类型是固定的T类型,在编码期 不需要进行任何的转型操作。
List<?>是只读类型的,不能进行增加、修改操作,因为编译器不知道List中容纳的是 什么类型的元素,也就无毕校验类型是否安全了,而且List<?>读取出的元素都是Object类 型的,需要主动转型,所以它经常用于泛型方法的返回值。注意,List<?>虽然无法增加、修 改元素,但是却可以删除元素,比如执行remove、clear等方法,那是因为它的删除动作与泛型类型无关
List<Object>也可以读写操作,但是它执行写入操作时需要向上转型(Upcast),在读 取数据后需要向下转型(Downcast),而此时已经失去了泛型存在的意义了。
打个比方,有一个篮子用来容纳物品,List<T>的意思是说,“嘿,我这里有一个篮子, 可以容纳固定类别的东西,比如西瓜、番茄等”。List<?>的意思是说“嘿,我也有一个篮子, 我可以容纳任何东西,只要是你想得到的”。而List<Object>就更有意思了,它说“嘿,我 也有一个篮子,我可以容纳所有物质,只要你认为是物质的东西就都可以容纳进来”。
推而广之,Dao<T>应该比Dao<?>、Dao<Object>更先采用,Desc<Person>则比Desc<?>、Desc<Object> 更优先采用。
- 建议采用的顺序是 List<T>、List<?>、List<Object>
- List<T>和List<Object[]>
- Object 转为List<T>
- List<?>和List<T>的区别?以及List 和List<Object>的关系
- java List<T>和List<Object>的区别
- List<Object[]>反射转成为List<T>
- List.toArray()采用的是深度拷贝
- List<object>和List<List<object>>的用法
- List<T>的使用
- List<T>的使用
- List<T>的使用
- List<T>的使用
- sort(List<T> list, Comparator<? super T> c) 根据比较器产生的顺序排序
- <T> List<T>的用法
- List<T>
- Map<String, List<Object>> and Map<String, List<T>>
- List和List<Object>的区别
- java List<T> 和 List<?>的区别
- 记录——《C Primer Plus (第五版)》第十章编程练习第十题
- sublime快捷键大全
- Java 实现导出excel表 POI
- 简单躲避落物游戏
- 数据列表DataList模板之实例
- 建议采用的顺序是 List<T>、List<?>、List<Object>
- 俺 come back
- mac系统如何显示和隐藏文件
- 开发中遇到的问题记录
- 记录——《C Primer Plus (第五版)》第十章编程练习第十一题
- UILabel
- Java多线程(一)之volatile深入分析
- 对定义修改和删除基本表的认识
- [leetcode]Product of Array Except Self