为什么Javac允许某些不可能的强制转换而有些不允许?

问题描述 投票:7回答:2

[如果我尝试将String强制转换为java.util.Date,则Java编译器会捕获该错误。那么,为什么编译器不将以下内容标记为错误?

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

当然,JVM在运行时会抛出ClassCastException,但编译器不会对其进行标记。

java casting compiler-errors javac
2个回答
9
投票

从技术上讲,演员阵容是可能的。至少,javac无法轻易证明它。


0
投票

让我们考虑您的示例的以下概括:


-1
投票

正如您链接的页面上所说:“类型转换通常不是最佳实践;合法的唯一情况之一是与equals方法有关。”

© www.soinside.com 2019 - 2024. All rights reserved.