[英]Unwanted Dead Code Warning in Eclipse
以下代碼在Eclipse中給出了一個“死代碼”警告:
private void add(Node<E> n, E element) {
Node<E> e = new Node<E>(element);
if (n == null)
root = e;
else if (n.compareTo(e) > 0)
if (n.hasLeft())
add(n.getLeft(), element);
else
n.setLeft(e);
else if (n.hasRight())
add(n.getRight(), element);
else
n.setRight(e);
balance(e);
}
警告出現在root = e;
的行上root = e;
。
我查了死代碼,發現代碼帽沒有效果,因此會被java編譯器忽略。
但是,這個root是我班級中的私有字段,因此我的程序功能是必要的。
編譯器真的會忽略這個嗎? 我怎么能阻止它? 為什么它認為它是死代碼?
如果root
是你的類中包含你發布的add
方法的私有字段,那么,如你所說,行root = e;
不應該被Eclipse IDE認為是死代碼。
編譯器應該正常工作......它只是一個IDE警告。
我的猜測是Eclipse會執行某種代碼行走(類似於Cyclomatic復雜性工具)來確定代碼路徑並找到“死代碼”和“無法訪問的代碼”。
我會嘗試刷新,然后干凈並在IDE中構建。 如果這不能解決它,Eclipse可能會對死代碼的警告產生“誤報”。 這不是第一次......我同時使用Eclipse和IntelliJ IDEA,並且看到兩個IDE之前都錯誤地警告過代碼。 但是,盡管有IDE警告,我的代碼仍可正常編譯。
看看你的條件。
Node<E> e = new Node<E>(element);
if (n == null) {
// dead code here
}
此代碼已死,因為n == null
將始終為false。 您剛剛在上一行創建了一個新的Node<E>
實例(無條件)。 新對象永遠不會為null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.