java - 没有默认区域设置的 MessageFormat 格式

标签 java

我正在尝试修复禁用 api 的错误。我有一个错误,内容是:

[forbiddenapis] Forbidden method invocation: java.text.MessageFormat#format(java.lang.String,java.lang.Object[]) [Uses default locale]
[forbiddenapis]   in org.a.b.MyClass (MyClass.java:813)    

这表明:

logger.debug(MessageFormat.format("Added {0} documents", new Object[] { new Integer(count) }));

所以,我将其更改为:

logger.debug(MessageFormat.format("Added {0} documents", new Object[] { new Integer(count) }, Locale.ROOT));

但是,错误仍然存​​在。我该如何修复它?

最佳答案

静态 MessageFormat.format() 实现都不接受 Locale 作为参数,尤其是作为最后一个参数,因为它会干扰 Object... 签名;设置区域设置的唯一方法是在构造函数中,因此如果您热衷于使用静态 format() 方法,则必须使用类似于以下的代码在某处“滚动您自己的”:

public static String format(Locale loc, String pattern, Object ... arguments) 
{
  MessageFormat temp = new MessageFormat(pattern, loc);
  return temp.format(arguments);
}

关于java - 没有默认区域设置的 MessageFormat 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38857783/

相关文章:

java - 使用类的对象数组进行碰撞

java - Jackrabbit 存储库位置

Java - 就性能而言,哪个集合最适合这种情况?

java - 生成 Jacoco 报告后运行 "Coverage information was not collected."时为 'gradle sonarRunner'

java.lang.LinkageError : loader 'bootstrap' attempted duplicate class definition for java. lang.$JaCoCo 与 Java11 和 Jacoco 0.8.5

java - 有没有办法在类中通过 getter 方法找到 setter 方法,反之亦然?

java - WSO2 身份服务器管理控制台显示没有 STS 链接

java - 有一个实现和 "service"类 : Are these best practice?

java - GWT 元素 setAttribute 与 setPropertyString

java - 使用 Keycloak 保护 Spring Cloud 网关