我觉得可以这样理解:
1、首先加入泛型是为了限定集合中的操作类型,减少安全隐患,把运行期可能会出现的错误改到编译期,可是又限定的太严了,会增加代码的复杂性。
2、<?extends E>和<? super E>相当于对泛型进行了扩展。限定的不是那么严了、、、
3、对于这个E,只要是引用类型均可,当然也包括类似Integer这样的包装类,那么此时,如果E是普通的引用类型,当然没问题,只要是E的子类均可,对于Integer这样的,<? extends Integer>编译没问题,因为它不存在任何安全隐患啊、、你不可能找到Integer的子类,因此<? extends Integer>和<Integer>是等价的、、、(个人想法,欢迎批评指正!) |