当前位置:  开发笔记 > 编程语言 > 正文

为什么SomeClass <?super T>不等同于Java泛型类型中的SomeClass <T>?

如何解决《为什么SomeClass<?superT>不等同于Java泛型类型中的SomeClass<T>?》经验,为你挑选了2个好方法。

我注意到了Collections.sort的具体说明:

public static  void sort(List list, Comparator c)

为什么? super这里需要" "?如果ClassB延伸ClassA,那么我们不能保证无论如何Comparator能够比较两个ClassB物体,没有" ? super"部分吗?

换句话说,给定此代码:

List list = . . . ;
Comparator comp = . . . ;
Collections.sort(list, comp);

为什么编译器不够聪明,即使没有? super为Collections.sort()的声明指定" " 也不行!



1> Chris Jester..:

Josh Bloch今年在Google I/O上发表了一篇名为Effective Java Reloaded的演讲,您可能会感兴趣.它讨论了一个名为"Pecs"(生产者extends,消费者super)的助记符,它解释了为什么在输入参数中使用? extends T? super T(仅用于返回类型),以及何时使用哪些.



2> Bill the Liz..:

在使用通配符更有趣的情况下,有一个非常好(但有点曲折)的解释.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有