Интересная ситуация.У меня есть раздел кода, который создает несколько 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 не может быть нулевой в этом месте».Насколько я понимаю, у меня есть переменная, инициализированная нулем, затем попытка создания выходного потока, но это не гарантируется.игнорировать предупреждение достаточно просто, но я бы скорее знал, как компилятор приходит к выводу, что countStream гарантированно будет успешно создан
K.Barad