日期:2014-05-20  浏览次数:20818 次

于集合工具类Collections中的泛型问题,求详细解答。
疑惑的泛型方法:
static <T> Comparator<T> reverseOrder()

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

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

------解决方案--------------------
TreeSet的构造函数指定了比较器的类型参数是TreeSet类型参数或其超类,此处使用了类型推断特性http://www.ibm.com/developerworks/cn/java/j-djc02113/ 推断出实际类型是String
 public TreeSet(Comparator<? super E> comparator) {
this(new TreeMap<E,Object>(comparator));
    }