JAVA泛型和集合的一点疑惑。求大神指教下。

EricTao2 2017-07-22 04:29:11
1.在泛型里大家一般都这样写List<T> list = new ArrayList<>();
但是我有次忘了写<>成了List<T> list = new ArrayList();
竟然也让程序跑起来了
泛型的擦除我也懂一些,按道理我的AraayList底下全是Object吧,怎么可以当成目标类来用的。难道这样也会自动推断?还是因为引用表明了类,在使用的时候自动强转了?很好奇。
2在集合里我看书上说比如TreeMap是用key来比较大小进行排序的,并且使用的是内置的比较器。我就很好奇这比较器是怎么比较的,按道理我可能出现的key有很多种啊它难道都能比较,用的啥算法。
...全文
152 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
EricTao2 2017-07-23
  • 打赏
  • 举报
回复
明白了,多谢
soton_dolphin 2017-07-22
  • 打赏
  • 举报
回复
在泛型里大家一般都这样写List<T> list = new ArrayList<>(); 首先如果没有一个T类真实存在,你上面的这个写法是错误的。 其次,为了能够向旧版本兼容,即使没有泛型也能够编译成功,所以下面的写法都没问题 List s = new ArrayList<String>(); // 不会保证类的一致 List<String> s = new ArrayList<>(); List<String> s = new ArrayList<String>(); List<String> s = new ArrayList(); 如果你的key 没有实现comparable, 那么在放到treemap 里面的时候会报错

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧