报告对 toString()substring() 等可被替换为更简单表达式的 String 构造函数和方法的冗余调用。

例如,在 "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() 调用保证不同对象相等性的代码中应用快速修复后改变与 ==!= 进行字符串比较的结果。

使用下方的不报告单实参 substring() 调用选项可以不报告如下所示的代码。


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

可以替换为以下内容。


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

2018.1 最新变化