繁体   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