A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

疑惑的泛型方法:
static <T> Comparator<T> reverseOrder()

用法:
TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());

疑惑之处:
方法是泛型的,但是在调用中,也就是红色部分,没有使用泛型,那么String类型如何传进此方法中呢?
求详细解读,并可延伸说下泛型易出错的用法,谢谢了。

评分

参与人数 1技术分 +1 收起 理由
To + 1 很给力!

查看全部评分

2 个回复

倒序浏览
个人觉得吧,
Set<String> ts = new TreeSet<String>(Collections.reverseOrder());
你这么创建ts了,不是已经明确了,对象就是String了,为何在后面还要多此一举的写上Collections<String>.reverseOrder(),本身就是String,还要强调的话,没多大意思,再说了你怎么加泛型啊,编译器报的错误是非法表示错误,也就是说,编译器压根儿就不认识这种表达式,是语法错误,而不是逻辑错误,可能人家在设计的时候去掉了泛型吧,好吧jdk1.7中对泛型的省略
Set<String> ts = new TreeSet<>(),后面再就没有必要了。
只是个人理解,具体是怎么回事,还是看源码比较OK。。。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
首先集合存储的对象一般为同一种类型,Collections.reverseOrder()会从传入的第一个元素进行确定存储对象的类型,相当于第一个元素既是存储对象,又可以充当泛型的作用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马