为什么javac允许一些不可能的转换,而不允许其他的?
如果我尝试将 a 强制转换为 ,Java 编译器会捕获错误。那么,为什么编译器不将以下内容标记为错误呢?String
java.util.Date
List<String> strList = new ArrayList<>();
Date d = (Date) strList;
当然,JVM 在运行时会抛出一个,但编译器不会标记它。ClassCastException
javac 1.8.0_212 和 11.0.2 的行为相同。