如果我尝试将a强制转换String
为a java.util.Date
,则Java编译器会捕获该错误。那么,为什么编译器不将以下内容标记为错误?
List<String> strList = new ArrayList<>();
Date d = (Date) strList;
当然,JVM ClassCastException
在运行时会抛出a ,但是编译器不会对其进行标记。
该行为与javac 1.8.0_212和11.0.2相同。
strList
是实现List的类的实例,则强制转换是合法的。
List
这里没什么特别的。Date d = (Date) new Object();