gpt4 book ai didi

java - Eclipse 出现死代码警告,但是出了什么问题?

转载 作者:行者123 更新时间:2023-12-03 02:41:16 28 4
gpt4 key购买 nike

我已经编写了一个方法来检查我的字符串是否在文件中,但是 Eclipse 给出了死代码警告。这是我的方法:

private boolean KeyPresent(String key){
try{
BufferedReader fileReader=new BufferedReader(new FileReader(keyPath));
while(true){
String s=fileReader.readLine();
if(s.equals(key)){
fileReader.close();
return true;
}else if(s==null){
fileReader.close();
return false;
}
}
}catch(IOException e){
e.getStackTrace()
return false;
}
}

else if(s==null) 部分是警告的来源。为什么?如果找不到任何匹配结果(并且传入的输出均为空),则返回 false。我认为还可以。怎么了?

还有一个问题。使用哪个更好?

String s;
while(true){
s="New Value";
....
}

while(true){
String s="new value";
...
}

我认为垃圾收集器会消耗系统资源,所以第一个更好。然而,我在第二个例子中看到了更多例子。您会使用哪一个?

最佳答案

查看整个 if/else:

if (s.equals(key)) {
...
} else if (s == null) {
...
}

如果s null,则s.equals(key)将抛出NullPointerException - 所以你永远不会进入第二个 if block 。

无论如何,你应该使用 try-with-resources block ,而且我个人也不会捕获 IOException ......只是让它冒泡:

private boolean keyPresent(String key) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(keyPath))) {
String line;
while ((line = reader.readLine()) != null) {
if (line.equals(key)) {
return true;
}
}
return false;
}
}

请注意,这里没有垃圾收集差异;在循环之前声明变量仅意味着您可以在 while 条件内分配值。

关于java - Eclipse 出现死代码警告,但是出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38577029/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com