繁体   English   中英

为什么我在这个Java代码中收到“死代码”警告?

[英]Why do I get a “dead code” warning in this Java code?

有人请告诉我为什么我在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));

或者a

sprintTaskConnections.clear();

在...前面

if (!sprintTaskConnections.isEmpty())
projectId = sprintTaskConnections.get(0).getProjectId();

结果总是一样的!

请帮助我,我现在还没有得到它!

我没有JiraSprint代码,所以我无法确认这一点,但我怀疑JiraSprint构造函数在传递projectId而不是Integer地方采用了int 这迫使Java自动取消整理整数。 如果Integer projectId为null,那么你将得到一个NullPointerException (因为自动取消装箱),所以你甚至都不会进入if块。 因此,projectId不能为null。

也许: new JiraSprint(..)得到int projectId

在这种情况下,如果projectIdnull ,则此行:

JiraSprint sprint = new JiraSprint(sprintInfo.getInt("id"), name, state, projectId, startDate, endDate);

将抛出NPE,因此在此行之后projectId不能为null

projectId很有可能永远为null,因此“if”中的代码永远不会被执行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM