每次使用 Guava Splitters/Joiners 时都应该创建它们吗?

cod*_*ker 5 java instance guava

Guava 包含用于拆分和连接字符串的实用程序,但它需要实例化 Splitter/Joiner 对象才能这样做。这些是通常只包含要拆分/加入的字符的小对象。维护对这些对象的引用以便重用它们是一个好主意,还是只在需要时创建它们并让它们被垃圾收集更好?

例如,我可以通过以下两种方式实现此方法:

String joinLines(List<String> lines) {
  return Joiner.on("\n").join(lines);
}
Run Code Online (Sandbox Code Playgroud)

或者

static final Joiner LINE_JOINER = Joiner.on("\n");

String joinLines(List<String> lines) {
  return LINE_JOINER.join(lines);
}
Run Code Online (Sandbox Code Playgroud)

我发现第一种方法更具可读性,但每次调用该方法时都创建一个新的 Joiner 似乎很浪费。

And*_*eas 4

老实说,这对我来说听起来像是过早的优化。我同意@Andy Turner 的观点,编写最容易理解和维护的内容。

Joiner.on("\n")如果您打算在几个地方使用,请使其成为一个命名良好的常量;选择选项二。

如果您只打算在您的方法中使用它joinLines,那么常量似乎过于冗长;选择选项一。