为什么javac允许一些不可能的类型转换而不允许其他类型转换?

13 浏览
0 Comments

为什么javac允许一些不可能的类型转换而不允许其他类型转换?

如果我试图将一个String转换为一个java.util.Date,Java编译器会捕捉到错误。那么为什么编译器不将以下内容标记为错误呢?

List strList = new ArrayList<>();                                                                      
Date d = (Date) strList;

当然,虚拟机在运行时会抛出一个ClassCastException,但是编译器不会标记它。

这个行为在javac 1.8.0_212和11.0.2下是相同的。

0