java - 对象类型的隐式声明和显式泛型声明之间的区别

标签 java object generics type-safety

我无法理解下面两个代码片段之间的区别。有人可以帮我做一个简单的解释吗? 我们什么时候应该使用它们?

如果有人可以帮助我做一个简单的解释,我将不胜感激。

//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/

相关文章:

Java类没有执行正确的实现重载方法

java - 限制按钮点击次数

java - 如何将我们的 WebApp 部署到 Liferay 中

python - 如何识别谷歌应用引擎中引用属性损坏的对象

java - 在日期对象中添加 5.30 小时

C++ 创建一个具有可变模板方法的接口(interface)

c# - 匿名类型 - 是否有任何显着特征?

java - 在我的程序中找不到符号变量时出错

java - 使用键(有时可以是映射或数组)将 JSON 绑定(bind)到 bean

Java:创建新实例