gpt4 book ai didi

Java:空比较总是产生错误:不正确的警告?

转载 作者:搜寻专家 更新时间:2023-11-01 01:23:44 27 4
gpt4 key购买 nike

有趣的情况。我有一段代码可以创建多个 ZipOutputStreams。作为安全检查,在我考虑编写任何内容之前,我会检查我的输出流是否已正确初始化:

ZipOutputStream countStream = null;
File countFile = null;
// other files

try {
countFile =
new File(savePath.getCanonicalPath() + savePath.separator + outputTag
+ "_COUNT_OUTPUTS.zip");
// other files
} catch (Exception e) {
outputLog.add("UNABLE TO FIND SAVE PATH");
return util.FILE_INVALID;
}

try {
// prepare outputs
if (countFile.exists() == true) {
countFile.delete();
} else {
}
countStream = new ZipOutputStream(new FileOutputStream(countFile));
// other files
} catch (Exception e) {
e.printStackTrace();
outputLog.add("UNABLE TO CREATE OUTPUT FILES");
return util.FILE_SAVE_FAIL;
}

if (countStream == null) {
outputLog.add("UNABLE TO CREATE OUTPUT FILES");
return util.FILE_SAVE_FAIL;
} else {
}

我没有特别看出这段代码中的问题出在哪里,但它在 null 测试中发出警告:“Null 比较总是产生错误:变量 countStream 在此位置不能为 null”。据我所知,我有一个初始化为 null 的变量,然后尝试创建输出流,但不保证会发生。忽略警告很容易,但我更想知道编译器如何得出保证成功创建 countStream 的结论

K·巴拉德

最佳答案

编译器能够看到你不能为空,因为:

  1. 在你的try中你已经初始化了它(countStream = new ....)并且
  2. 在您的catch 中,您已经“return”退出了方法。

因此,代码“if (countStream == null)”只能在countStream初始化为非空后通过正常流程获得ZipOutputStream.

关于Java:空比较总是产生错误:不正确的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5115259/

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