使用{}而不是字符串连接有什么好处吗?
来自slf4j的一个例子
logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
Run Code Online (Sandbox Code Playgroud)
代替
logger.debug("Temperature set to"+ t + ". Old temperature was " + oldT);
Run Code Online (Sandbox Code Playgroud)
我认为这是关于速度优化的,因为根据配置文件,可以在运行时避免参数评估(和字符串连接).但是只有两个参数是可能的,那么有时除了字符串连接之外别无选择.需要就此问题提出意见.
在将一些旧记录器转换String.format为较新的slf4j {}变体的过程中,我偶然发现了这种情况:
logger.error(String.format("%s ... %s ... %s", ...), e);
Run Code Online (Sandbox Code Playgroud)
我想只使用{}并删除String格式,但是,包含throwable的记录器方法签名是:
error(String msg, Throwable t)
所以我必须保持String.format这种情况?!
为什么没有:
error(Throwable t, String format, Object... arguments)