簡體   English   中英

為什么我會收到警告“死代碼”?

[英]Why do I get warning “dead code”?

public class DeadCodeInLuna {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String string;
        for (string = in.readLine(); !string.equals(""); string=in.readLine()) {
            if(string == null) { 
               System.out.println("null while reading response!");
            }
        }
    }
}

因為!string.equals("")計算為true所以string永遠不能為null

換句話說,當!string.equals("")true ,保證string不為null否則將發生NullPointerException

因為在代碼的那一點, string不能為空。 如果它出來nullin.readLine()你會得到一個NullPointerException的條件檢查for

更改為

    for(string=in.readLine();!"".equals(string);string=in.readLine())
        if(string==null) System.out.println("null while reading response!");
    }

不管string是否為null,在equals都將起作用的地方,您將看到警告消失。

在您的情況下,請避免將string == null

for (string = in.readLine(); !string.equals(""); string=in.readLine()) {
//                           ^--------> here!!!

所以if(string == null)是多余的,永遠不會為真

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM