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 最新变化