次のような連続する複数の java.io.File 属性チェックを報告します。 このような呼び出しは Files.readAttributes() の一括呼び出しに置換できます。 通常、複数の属性チェックを個別に使用するよりもパフォーマンスが向上します。

例:


  boolean isNewFile(File file, long lastModified) throws IOException {
    return file.isFile() && file.lastModified() > lastModified;
  }

クイックフィックス適用後:


  boolean isNewFile(File file, long lastModified) throws IOException {
    var fileAttributes = Files.readAttributes(file.toPath(), BasicFileAttributes.class);
    return fileAttributes.isRegularFile() && fileAttributes.lastModifiedTime().toMillis() > lastModified;
  }

このインスペクションは IOException が現在のコンテキストで処理されていない場合は警告を表示しませんが、その場合でもクイックフィックスは使用できます。

ただし、置換内容は通常はまったく同じとは限らないため、注意して適用する必要があります。 特に、ファイルがまったく存在しない場合に動作が異なる場合があります。

このインスペクションは、プロジェクトまたはモジュールの言語レベルが 7 以上の場合にのみ報告します。

2022.1 の新機能です