Eclipse为可访问代码(变体)提供死代码警告

gee*_*rt3 7 java eclipse dead-code

我有以下代码:

public String myMethod(String keyValue) {
    Map<String, Integer> keyValueToRowIndex = ...
    Integer rowIndex = (keyValue == null) ? 0 : keyValueToRowIndex.get(keyValue);
    if (rowIndex == null)
      return null;
    ...
}
Run Code Online (Sandbox Code Playgroud)

Eclipse给出了"死代码"警告return null;.删除测试keyValue == null也删除了警告,但我没有看到额外的测试如何使return语句死代码.显然,如果地图中没有包含某些非null的条目keyValue,那么rowIndex仍然可以为null.或者我在这里遗漏了什么?

我已经看到了类似的Eclipse问题(例如这里),但这个问题似乎是一个不同的,更简单的问题.

Gyr*_*ess 1

我的猜测是第 3 行被解释为

Integer rowIndex = Integer.valueOf((keyValue == null) ? 0 : keyValueToRowIndex.get(keyValue).intValue());
Run Code Online (Sandbox Code Playgroud)

(所以 ?: 的两个参数都统一为int) - 奇怪的是,Eclipse 现在没有显示任何警告,即使现在很明显 rowIndex 永远不会为空......

您也可以将 替换0Integer.valueOf(0)以使警告消失。