より単純な式に置換できる String コンストラクター、および toString() または substring() などのメソッドへの冗長な呼び出しを報告します。

たとえば、このようなメソッドの呼び出しは、"string".substring(0)"string".toString()new StringBuilder().toString().substring(1,3) のようなコードで安全に除去できます。

例:


  System.out.println(new String("message"));

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


  System.out.println("message");

このクイックフィックスは冗長なコンストラクターの呼び出しを除去するため、String 参照の同等性に影響を与える可能性があります。ご注意ください。 たとえバッドプラクティスだとされていても、これを維持する必要がある場合は警告を抑止するか、冗長な String コンストラクターの呼び出しを無視するインスペクション設定を使用してください。

上記の例のようなコードを報告しないようにするには、以下の「String コンストラクターの呼び出しを報告しない」オプションを使用します。 これにより、異なるオブジェクト識別子を保証するために new String() の呼び出しを使用するコードでクイックフィックスを適用した後に == または != を使用する String の比較結果が変更されるのを防ぐことができます。

以下のようなコードを報告しないようにするには、下にある「単一引数の substring() の呼び出しを報告しない」オプションを使用します。


  stringBuilder.append(string.substring(5));

これは以下に置換できます。


  stringBuilder.append(string, 5, string.length());

2018.1 の新機能です