我想知道为什么会是一个问题,如果Java有泛型没有删除。我知道这个问题是与旧库兼容的问题,但是如果把Object放在我们不指定的类型的地方,那就不行了。例如,我们可以使用List list = new ArrayList();
作为List<Object>
-s集合,List<Integer> list = new ArrayList<Integer>();
将按原样不删除。泛型删除
有人可以举个例子,如果擦除不起作用会发生什么。
我想知道为什么会是一个问题,如果Java有泛型没有删除。我知道这个问题是与旧库兼容的问题,但是如果把Object放在我们不指定的类型的地方,那就不行了。例如,我们可以使用List list = new ArrayList();
作为List<Object>
-s集合,List<Integer> list = new ArrayList<Integer>();
将按原样不删除。泛型删除
有人可以举个例子,如果擦除不起作用会发生什么。
为了解Java的泛型和特别的类型擦除,您可以找到的最好的资源之一是Angelika Langer的FAQ关于该主题的内容,请看看它,所有内容都将清晰明了。
这不是简单的向后兼容性问题,而是migration compatibility。正如您正确地指出的那样,1.5之前的每个列表实际上都是List<Object>
,因此定义List := List<Object>
本可以工作,并且已经向后兼容。但是,将现有库迁移到1.5并将隐含的List<Object>
转换为List<Foo>
会破坏客户端代码。输入原始类型..
我不确定您了解什么类型的删除是... –
您的问题不清楚。此外,您似乎将原始类型与特定类型混淆。 – helpermethod