javajava 泛型 通配符之java 泛型 通配符通配符具体是什么作用?

学习了javajava 泛型 通配符与通配符的知識想问问,在写某个方法时java 泛型 通配符用一个字母代替在具体实现的时候,把这个字母替换成具体的类型那通配符用?表示不也是代表着随便哪种类型吗?比如API中... 学习了javajava 泛型 通配符与通配符的知识想问问,在写某个方法时java 泛型 通配符用一个字母代替在具体实现的时候,把这个字母替换成具体的类型那通配符用?表示不也是代表着随便哪种类型吗?
比如API中的这个方法
把?换成E又有什么区别呢

而?是一种實例化,是不确定类型的实例化直接写?,等同于? extends Object

而换成E就被限定了。

原因是ArrayList<E>是个模板类使用的时候总要实例化,比如实例化为

那么這个removeAll参数的类型也被实例化成Collection<E>这样是违背了设计的初衷了。

 

如果父类不是某个具体类型如java 的 Collection接口

} 代表任何E的子类,这时是需要通配符嘚

有一点就是它可以操作java 泛型 通配符类型的变量

这里 将不能调用set()方法 ,因为无法检查类型是否一致set(null)是可以的。

E 是在写一个java 泛型 通配符類的时候类中的参数类型不确定的时候(写类名后) 或者 方法里面有未知类型的参数的时候(写方法返回类型前); 用于已经用了E的情況下需要表示E的未知子类或者父类,还有就是表示Object的未知子类或者父类

我要回帖

更多关于 java 泛型 通配符 的文章

 

随机推荐