当我有以下代码时会触发一个特定的IntelliJ IDEA检查:
string1 = string2.replace(string3, string4);
检查说:
'替换()'可以用编译的java.util.regex.Pattern构造替换。
然后提供为我重构代码,这导致使用常量文字模式。
我开启此检查主要用于我实际动态创建正则表达式的情况。如果我遵循IntelliJ的建议,它有时可以提高性能。但在String.replace()
的情况下,论证不是正则表达式。在这种情况下遵循IntelliJ的建议是否真的不会导致任何性能提升,而它所做的只是会损害可读性?
是否可以将String.replace()
关闭,但是为String.replaceAll()
和String.replaceFirst()
保持开启状态?我无法看到这样的选择。
答案 0 :(得分:4)
String.replace(String, String)
的实现 1 只是委托给Pattern.compile(...).matcher(...).replaceAll(...)
。因此,我无法想象在用户代码中使用明确的Pattern
将会更少更高效的情况(实际上,在很多情况下,它可能最终更多高性能)。可读性当然是一个不同的问题!
我不确定是否可以配置IntelliJ检查,但您可以suppress it查看单个语句,方法或类。
<子> 1。至少在Oracle的JDK8。
中