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!");
}
}
}
}
答案 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!!!
是多余的,永远不会是真的