gpt4 book ai didi

java - 不可转换类型但没有警告或错误?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:28:40 26 4
gpt4 key购买 nike

在一些代码审查过程中,我发现了这行代码:

ScTyp lScTyp = (ScTyp) (lWorkspace.getScTyp() == null ? ChartFactory.BLANK_STRING : lWorkspace.getScTyp());

我有点困惑,因为这行代码导致相关项目中的 Hudson 构建失败。原因:不可转换的类型

我知道这里的类型转换是完全错误的。如果 getScTyp()null,它将尝试将 String (ChartFactory.BLANK_STRING) 转换为 ScType.

为什么 Eclipse 在这行代码中不显示错误或至少不显示警告?

最佳答案

由于三元运算符可以计算为字符串或 getScType 返回的内容,因此它被计算为对象引用。将 Object 引用转换为任何其他类型是完全可以的。

查看该行的另一种方法是

Object temp = lWorkspace.getScTyp() == null ? ChartFactory.BLANK_STRING : lWorkspace.getScTyp();
ScTyp lScTyp = (ScTyp)temp;

如果通过三元运算符的两条路径都返回 ScTyp,那么就不需要强制转换了。

我猜 Eclipse 最初确实在添加强制转换之前显示错误,并且有人通过添加强制转换修复了错误。然后隐藏了真正的错误。

关于java - 不可转换类型但没有警告或错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17744509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com