我正在尝试修复禁止的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/

10-09 05:48