为了账号安全,请及时绑定邮箱和手机立即绑定

eclipse会在编译前比较静态值吗?

eclipse会在编译前比较静态值吗?

手掌心 2022-05-21 17:12:13
在这个字符串 eclipse 中显示“不匹配”的死代码警告? String b = ("goodString")==("goodString") ? "Condition Macth": "Not Match";它甚至在编译之前检查字符串吗?String a = ("goodString".equals("goodString")) ? "Condition Macth" : "Not Match";如果我更改为 .equals 警告关闭。
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

Eclipse 可能会分析您的代码以检测死代码。

在这种特殊情况下,它显示警告,因为这些值由于string interning而始终具有相同的标识,因此条件始终为真。Eclipse 检测到这一点并发出警告。

如果使用equals,则比较不再是常量表达式JLS § 15.28),并且不再保证返回true。因此警告消失了。


顺便说一句,您应该始终使用equals来比较字符串。


查看完整回答
反对 回复 2022-05-21
?
catspeake

TA贡献1111条经验 获得超0个赞

String b = ("goodString")==("goodString") ? "Condition Macth": "Not Match";

在这里,Eclipse IDE 足够聪明地找到死代码。如果发现“If”条件始终为真,那么它将“else”部分警告为死代码,因为它永远不会被执行。在此代码段中,三元条件始终为真,因此显示死代码警告。


查看完整回答
反对 回复 2022-05-21
  • 2 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信