java - Java 中的泛型是否避免了所有 ClassCastExceptins?

标签 java generics java-6 classcastexception

由于 Java 5 仅在编译时检查泛型,它们能否完全避免 ClassCastExceptions 情况?

最佳答案

Java 5 泛型提供的“铸铁”保证是您永远不会从编译器插入的强制转换中看到 ClassCastException,提供编译不会产生“未经检查”的警告。

在现实生活中,如果您的代码使用遗留(非泛化)库,您通常无法避免未经检查的警告。然后编译器生成的转换可以抛出 ClassCastException,您的工作是通过确保库代码返回的值的类型符合您的声明来防止这种情况发生。

否则情况不变。在泛型之外,如果您转换为不兼容的类型,您将像往常一样获得 ClassCastException。

(这个问题和其他泛型问题的一个很好的引用是 Java Generics and Collections。)

关于java - Java 中的泛型是否避免了所有 ClassCastExceptins?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1277254/

相关文章:

java - Spring 没有找到 AspectJ 包

Java 小时到分钟 简单转换

java - 通配符声明的非显式泛型类型的泛型返回类型

oracle - Oracle 批量更新速度慢

Jenkins Sonar 插件突然停止工作

java - 从另一个具有相同锁的同步块(synchronized block)调用同步块(synchronized block)

java - 关于 Java 中线程的说明

java - 类型删除 - 泛型 - 在预期的地方获取 ClassCastException

java - 使用和声明泛型 List<T>

java - Java 7.x 中的验证树不起作用(在 Java 6.x 中很好)