请看上面的代码,我们完美的骗过了编译器,但是运行的时候java可是不会给你留情面的 2333
编译器在检测强制转换的时候会判断子父类关系,基本类型的强制转换除外
但是我们发现上面的Date和dateTimeFormatter.parse( "2019-12-31 23:24:25")没有子父类关系,但是编译却没有报错;
Why?
因为dateTimeFormatter.parse( "2019-12-31 23:24:25")传递的参数是interface的多态
所以编译器迷茫了不知道它是否是一个Date对象,他就交给了运行机制去去处理,当你运行的时候异常就会显示出来了