博为峰Java技术题 ——JavaSE 泛型Ⅲ

博为峰小博老师:

[使用类型通配符]

List不是List的父类型,List不是List的父类型,试图用以下方式赋值是不允许的:

第5行将报错”Type mismatch: cannot convert from List to List”。有人可能觉得这样很不方便:我在一个方法里面只需要循环检索一个List,也不能利用多态放一个父类型进去,也不能重载,那怎么办呢?针对这个问题,Java给开发者提供了通配符”?”,看一下:

博为峰Java技术题 ——JavaSE 泛型Ⅲ_第1张图片

是类型通配符,表示是任何泛型的父类型,这样List、List这些都可以传递进入printList方法中,注意这里的参数不能写成List,这样就报错了,E未定义。当然也可以不加,不过这样会有警告:如果传递一个List给List,相当于传递一个只承诺将它当作List(原始类型)的方法,这将会破坏使用泛型的类型安全。

再注意一点,使用类型通配符,只能从中检索元素,不能添加元素。

你可能感兴趣的:(博为峰Java技术题 ——JavaSE 泛型Ⅲ)