为什么我会收到警告"死代码"?

时间:2015-05-25 09:53:47

标签: java 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!");
            }
        }
    }
}

3 个答案:

答案 0 :(得分:4)

如果string评估为null!string.equals("")永远不会是true

换句话说,当!string.equals("")true时,string保证不会null,否则会发生NullPointerException

答案 1 :(得分:1)

因为在代码的那一点,string不能为空。如果它来自null的{​​{1}},则您在in.readLine()的条件检查中获得NullPointerException

将其更改为

for

无论 for(string=in.readLine();!"".equals(string);string=in.readLine()) if(string==null) System.out.println("null while reading response!"); } 是否为空,equals都会有效,并且您会看到警告消失。

答案 2 :(得分:0)

在您的情况下,您可以避免$ rsync -rtv /path/to/sqlite_db/ /path/to/sqlite_db_bkup/

string == null

所以for (string = in.readLine(); !string.equals(""); string=in.readLine()) { // ^--------> here!!! 是多余的,永远不会是真的