为什么我会收到警告"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不能为空。如果从in.readLine()中得到null,则在for的条件检查中得到NullPointerException

改为

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

,无论string是否为空,equals都将工作,并且您将看到警告消失。

在你的条件下你避免string == null

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

所以if(string == null)是多余的,永远不会为真

相关内容

  • 没有找到相关文章

最新更新