Как исправить findbugs предупреждение "Possible null pointer dereference"?
dir.toFile().list().length вызывает предупреждение в spotbugs "Possible null pointer dereference"
Files.walkFileTree(binaryPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult postVisitDirectory(final Path dir, final IOException exc) throws IOException {
if (dir.toFile().list().length == 0) {
Files.delete(dir);
}
return FileVisitResult.CONTINUE;
}
});
Есть другой способ исправить это, кроме как добавить условие
if ((dir != null) && (dir.toFile() != null) && (dir.toFile().list() != null)) {
if (dir.toFile().list().length == 0) {
Files.delete(dir);
}
}
Ответы (1 шт):
Автор решения: Alexey R.
→ Ссылка
Можно попробовать обернуть в трайкетч и ловить обрабатывать налпоинтеры. К слову, dir.toFile() не может быть налом. Тут либо создается объект, либо вбрасывается эксепшен.
А еще вот такой "нало-безопасный" вариант:
Files.walkFileTree(binaryPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult postVisitDirectory(final Path dir, final IOException exc) throws IOException {
if (dir !=null
&& Files.isDirectory(dir)
&& !Files.list(dir).findAny().isPresent() ) {
System.out.println("Deleting: " + dir.toString());
Files.delete(dir);
}
return FileVisitResult.CONTINUE;
}
});