String.repeat() メソッドに置換できるループを報告します (Java 11 以降で使用できます)。
例:
void append(StringBuilder sb, int count, Object obj) {
for (int i = 0; i < count; i++) {
sb.append(obj);
}
}
クイックフィックス適用後:
void append(StringBuilder sb, int count, Object obj) {
sb.append(String.valueOf(obj).repeat(Math.max(0, count)));
}
このインスペクションは count が負の値でないことを静的に証明できない場合、デフォルトでは count を Math.max(0, count) でラップする場合があります。 この処理はセマンティクスの変更を防ぐために行われます。String.repeat() は負の数値を拒否するためです。
必要に応じてこの動作を無効にするには、「セマンティクスの変更を回避するために Math.max(0, count) を追加する」オプションを使用します。
同様に、繰り返したい文字列を String.valueOf でラップし、null になる可能性があるかどうかが分からない場合に NullPointerException を防ぐことができます。
このインスペクションは、プロジェクトまたはモジュールの言語レベルが 11 以上の場合にのみ報告します。
2019.1 の新機能です