Как исправить 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;
    }
});
→ Ссылка