【发布时间】:2018-10-15 10:08:52
【问题描述】:
我有以下代码:
public String myMethod(String keyValue) {
Map<String, Integer> keyValueToRowIndex = ...
Integer rowIndex = (keyValue == null) ? 0 : keyValueToRowIndex.get(keyValue);
if (rowIndex == null)
return null;
...
}
Eclipse 在return null; 上给出“死代码”警告。删除 keyValue == null 的测试也会删除警告,但我看不出额外的测试如何使 return 语句成为死代码。显然,如果映射不包含某些非空 keyValue 的条目,那么 rowIndex 仍然可以为空。或者我在这里错过了什么?
我见过类似的 Eclipse 问题(例如here),但这个问题似乎不同且更微不足道。
【问题讨论】:
-
您的 Java 版本是多少? Java 7 和 8 之间存在差异。stackoverflow.com/a/25417505/5168011
-
我在 Java8 上使用过,但是 7 和 8 都存在警告。
-
在这两种情况下都会引发 NPE(请参阅对已接受答案的评论)