Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我会得到一个“;“死代码”;此Java代码中的警告?_Java_Dead Code - Fatal编程技术网

为什么我会得到一个“;“死代码”;此Java代码中的警告?

为什么我会得到一个“;“死代码”;此Java代码中的警告?,java,dead-code,Java,Dead Code,有人能告诉我,如果(projectId!=null),为什么在的else分支中会出现死代码警告?如果我做对了,解释器认为projectId永远不能为空-是这样吗?在我看来这是不可能的 Integer projectId = null; if (!sprintTaskConnections.isEmpty()) projectId = sprintTaskConnections.get(0).getProjectId(); // init name, state, startDate,

有人能告诉我,如果(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));
或者

在前面

if (!sprintTaskConnections.isEmpty())
projectId = sprintTaskConnections.get(0).getProjectId();
结果总是一样的


请帮帮我,我现在不明白

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

我没有
JiraSprint
代码,因此我无法确认这一点,但我怀疑JiraSprint构造函数在传入projectId时使用
int
,而不是
整数。这迫使Java自动取消对整数的装箱。如果整数
projectId
为null,则会在那里得到
NullPointerException
(因为自动取消装箱),因此甚至不会到达If块。因此,projectId不能为null。

可能:
new JiraSprint(..)
获取
int projectId

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

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

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

谁发出此警告?你是什么意思?你忘了打开停止的问题解决程序。这只是一个警告吗?您正在执行的检查似乎是一个聪明的设计,因此您可以忽略警告…但是我需要更多关于“if(!sprintTaskConnections.isEmpty())”@nidhoeggr09的详细信息,但是您使用的是什么IDE/编译器?可能是不相关的问题,但是为什么要麻烦获取所有配置信息,因为
sprintTaskConnections
是空的?你会预先知道它会失败,不管怎样,稍后会抛出几行……但它是在这里分配的-
projectId=sprintTaskConnections.get(0).getProjectId()。仅当!sprintTaskConnections.isEmpty()否,如果
sprintTaskConnections
不为空,
projectId
将获得分配的值。死代码是else部分中的代码。也就是说,编译器认为projectId永远不会为空。你是对的,我完全没有抓住要点,错误的wifttomato确实指出了不太明显的地方,实际上这更有可能+你是我今天的英雄!非常感谢。
JiraSprint sprint = new JiraSprint(sprintInfo.getInt("id"), name, state, projectId, startDate, endDate);