Tag: unbounded wildcard

List和List 之间的区别

我已经读过很多关于此的内容了,我知道: List listOfObject = new ArrayList(); // (0) //can only work for TYPE == Object. //if TYPE extends Object (and thus objects of type TYPE are Objects), //this is not the same with Lists: List is not a List 现在我已经读过以下内容: List undefinedList = new ArrayList(); // (1) //works for ANY type (except for primitives) 和 […]

Java – 新的Stack 相当于通用数据类型Stack 的新Stack ?

new Stack[N]等同于通用数据类型Stack new Stack[N] ? 编辑:虽然我明白混合generics类型和数组应该最好避免,并且存在更强大的解决方案,我的查询仍然存在:广泛认可的教科书,如由韦恩和罗伯特塞奇威克(第158页)的算法,第4版建议使用构造如下: Stack[] a = (Stack[]) new Stack[N];

genericsJava,无界的通配符

您好直接来自Oracle提供的Java教程http://docs.oracle.com/javase/tutorial/collections/interfaces/collection.html static void filter(Collection c) { for (Iterator it = c.iterator(); it.hasNext(); ) if (!cond(it.next())) it.remove(); } 我知道编译时的类型擦除。 而且我也知道一个类型(无界)将被Object替换。 知道在编译时使用无界外卡编译器会做什么? 只是删除它,因为它是原始类型? 提前致谢。

Java嵌套generics类型

为什么必须使用generics类型Map<?, ? extends List> 对于以下test()方法Map<?, List> Map<?, ? extends List>而不是更简单的Map<?, List> ? public static void main(String[] args) { Map<Integer, List> mappy = new HashMap<Integer, List>(); test(mappy); } public static void test(Map<?, ? extends List> m) {} // Doesn’t compile // public static void test(Map<?, List> m) {} 注意到以下工作,并且三种方法无论如何都具有相同的擦除类型。 public static void test(Map<?, List> m) {}

未绑定通配符与原始类型之间的差异

我正在阅读关于generics的内容,我不明白是否需要未绑定的通配符以及它与原始类型的区别。 我读了这个问题,但仍然没有弄清楚。 在未绑定的通配符的Java教程页面中,我得到了以下两点,我没有理解第一点: 如果您正在编写可以使用Object类中提供的function实现的方法。 当代码使用generics类中不依赖于类型参数的方法时。 例如, List.size()或List.clear() 。 实际上,经常使用Class因为Class大多数方法都不依赖于T 有人可以用外行语言解释未绑定的通配符和原始类型之间的区别。 List与List有何不同?

无法从List 转换为List <List >

原始列表转换为List就好了。 为什么原始列表列表不能转换为List ? { // works List raw = null; List wild = raw; } { // Type mismatch: cannot convert from List to List<List> List raw = null; List<List> wild = raw; } 背景故事 (缓解xy问题 ): 我正在使用的API返回List 。 我碰巧知道它始终是List<JAXBElement> 。 我打算循环并构建自己的List ,但是当我编写List raw = api();时,我试图修复(但不是抑制)原始类型编译器警告List raw = api(); 。 我试过了: List<JAXBElement> raw = api(); […]