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

在这个字符串 eclipse 中显示“不匹配”的死代码警告?

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

它甚至在编译之前检查字符串吗?

String a = ("goodString".equals("goodString")) ? "Condition Macth" : "Not Match";

如果我更改为 .equals 警告关闭。


手掌心
浏览 161回答 2
2回答

不负相思意

Eclipse 可能会分析您的代码以检测死代码。在这种特殊情况下,它显示警告,因为这些值由于string interning而始终具有相同的标识,因此条件始终为真。Eclipse 检测到这一点并发出警告。如果使用equals,则比较不再是常量表达式(JLS § 15.28),并且不再保证返回true。因此警告消失了。顺便说一句,您应该始终使用equals来比较字符串。

catspeake

String b = ("goodString")==("goodString") ? "Condition Macth": "Not Match";在这里,Eclipse IDE 足够聪明地找到死代码。如果发现“If”条件始终为真,那么它将“else”部分警告为死代码,因为它永远不会被执行。在此代码段中,三元条件始终为真,因此显示死代码警告。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java