有人请告诉我为什么我在if (projectId != null)
的else分支中收到死代码警告?如果我做对了,解释器认为projectId
永远不会为空 - 是吗?在我看来,这是不可能的......
Integer projectId = null;
if (!sprintTaskConnections.isEmpty())
projectId = sprintTaskConnections.get(0).getProjectId();
// init name, state, startDate, endDate here
JiraSprint sprint = new JiraSprint(sprintInfo.getInt("id"), name, state, projectId, startDate, endDate);
if (projectId != null)
{
...
}
即使我放了
sprintTaskConnections.add(new JiraSprintTaskConnection(1, 1, 1));
或
sprintTaskConnections.clear();
前面的
if (!sprintTaskConnections.isEmpty())
projectId = sprintTaskConnections.get(0).getProjectId();
结果总是一样的!
请帮助我,我现在还没有得到它!
答案 0 :(得分:11)
我没有JiraSprint
代码,所以我无法确认这一点,但我怀疑JiraSprint构造函数需要int
传递projectId,而不是{{1} }。这迫使Java自动取消整理整数。如果整数Integer
为空,那么您将获得projectId
(因为自动取消装箱),因此您甚至无法访问if块。因此,projectId不能为null。
答案 1 :(得分:1)
也许:
new JiraSprint(..)
得到int projectId
?
在这种情况下,如果projectId
为null
,则此行:
JiraSprint sprint = new JiraSprint(sprintInfo.getInt("id"), name, state, projectId, startDate, endDate);
会抛出NPE,因此projectId
在此行之后不能为null
。
答案 2 :(得分:-3)
projectId很有可能永远为null,因此“if”中的代码永远不会被执行