[英]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
?
在這種情況下,如果projectId
為null
,則此行:
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.