[如果我尝试将String
强制转换为java.util.Date
,则Java编译器会捕获该错误。那么,为什么编译器不将以下内容标记为错误?
List<String> strList = new ArrayList<>();
Date d = (Date) strList;
当然,JVM在运行时会抛出ClassCastException
,但编译器不会对其进行标记。
从技术上讲,演员阵容是可能的。至少,javac无法轻易证明它。
让我们考虑您的示例的以下概括:
正如您链接的页面上所说:“类型转换通常不是最佳实践;合法的唯一情况之一是与equals方法有关。”