在 java 中是否有 java.lang.String.format() 的替代方法来使用通用占位符

Is there an alternate to java.lang.String.format() in java to use generic placeholder

slf4j Logger 有一个干净的格式化程序语法。 (花括号的使用)

org.slf4j.Logger.error("Invalid value1={} for value2={}", value1, value1)

下面的方法有类似的替代方法吗?我想要一个通用的 ({}) 而不是特定于类型的占位符。

String.format("Invalid value1=%d for value2=%d", value1, value1)

如果您愿意,可以使用 MessageFormat,但您需要指定参数编号:

MessageFormat.format("Invalid value1={0} for value2={1}", value1, value2);

您可以将 String.format%s 一起使用。

String.format("Invalid value1=%s for value2=%s", value1, value1)

%s 适用于所有类型,就像 {} 在您的记录器中一样。它将任何给定参数转换为字符串,这似乎正是您的要求。