由于 Java 5 仅在编译时检查泛型,它们能否完全避免 ClassCastExceptions 情况?
最佳答案
Java 5 泛型提供的“铸铁”保证是您永远不会从编译器插入的强制转换中看到 ClassCastException,提供编译不会产生“未经检查”的警告。
在现实生活中,如果您的代码使用遗留(非泛化)库,您通常无法避免未经检查的警告。然后编译器生成的转换可以抛出 ClassCastException,您的工作是通过确保库代码返回的值的类型符合您的声明来防止这种情况发生。
否则情况不变。在泛型之外,如果您转换为不兼容的类型,您将像往常一样获得 ClassCastException。
(这个问题和其他泛型问题的一个很好的引用是 Java Generics and Collections。)
关于java - Java 中的泛型是否避免了所有 ClassCastExceptins?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1277254/