Inspectopedia Help

String.repeat() can be used

Reports loops that can be replaced with a single String.repeat() method (available since Java 11).

Example:

void append(StringBuilder sb, int count, Object obj) { for (int i = 0; i < count; i++) { sb.append(obj); } }

After the quick-fix is applied:

void append(StringBuilder sb, int count, Object obj) { sb.append(String.valueOf(obj).repeat(Math.max(0, count))); }

Locating this inspection

By ID

Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.

StringRepeatCanBeUsed
Via Settings dialog

Path to the inspection settings via IntelliJ Platform IDE Settings dialog, when you need to adjust inspection settings directly from your IDE.

Settings or Preferences | Editor | Inspections | Java | Java language level migration aids | Java 11

By default, the inspection may wrap count with Math.max(0, count) if it cannot prove statically that count is not negative. This is done to prevent possible semantics change, as String.repeat() rejects negative numbers. Use the Add Math.max(0,count) to avoid possible semantics change option to disable this behavior if required.

Similarly, a string you want to repeat can be wrapped in String.valueOf to prevent possible NullPointerException if it's unknown whether it can be null.

This inspection only reports if the language level of the project or module is 11 or higher.

New in 2019.1

Inspection options

Here you can find the description of settings available for the String.repeat() can be used inspection, and the reference of their default values.

Add Math.max(0, count) to avoid possible semantics change

Default: Selected

Availability

By default bundled with

IntelliJ IDEA 2024.1, Qodana for JVM 2024.1,

Can be installed with plugin

Java, 241.18072

Last modified: 18 June 2024