我无法理解下面两个代码片段之间的区别。有人可以帮我做一个简单的解释吗? 我们什么时候应该使用它们?
如果有人可以帮助我做一个简单的解释,我将不胜感激。
//1
List list1=new ArrayList();
for(Object obj:list1){}
//2
List<Object>list2=new ArrayList();
for(Object obj:list2){}
最佳答案
泛型是 Java5 附带的,其主要思想是避免众所周知的 ClassCastException 异常。在你的例子中,在Java5之前,我们习惯于迭代对象集合并在运行时对其进行强制转换,因此上面提到的异常经常发生。
使用泛型,这种运行时异常会变成编译时异常,您可以尽早意识到这些错误。在您的示例中,您可以选择是否要将这种情况作为运行时错误(选项 1)或编译错误(选项 2)来处理,并意识到在选项 2 中处理它是多么容易。
泛型不仅仅是隐式或显式声明,您应该看看这个 tutorial .
关于java - 对象类型的隐式声明和显式泛型声明之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34180350/