从String转换为Object时出现ClassCastException ..为什么?

Adn*_*tti 7 casting exception classcastexception

我只是在玩MessageFormat但是当我尝试将String传递给MessageFormat 格式时,它编译得很好,但后来我得到了一个运行时的classcast异常.这是代码.

MessageFormat format = new MessageFormat(""); Object obj = Integer.toHexString(10); format.format(obj);

现在我得到的运行时异常如下.

线程"main"中的异常java.lang.ClassCastException:java.lang.String无法强制转换为[Ljava.lang.Object; at java.text.MessageFormat.format(Unknown Source)at java.text.Format.format(Unknown Source)at JavaCore2.Codepoint.main(Codepoint.java:21)

and*_*wtc 6

MessageFormat.format()采用类型Object[](Object数组)的参数,而你传递一个Object.

您将不得不创建一个数组Integer:

MessageFormat format = new MessageFormat("{0}");
Object[] args = { Integer.toHexString(10) };

String result = format.format(args);
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案javadoc清楚地说单参数格式(obj)`等同于格式(obj,new StringBuffer(),new FieldPosition(0)).toString();`反过来(如果你跳转到另一个javadoc)等价于format((Object [])参数,result,pos).多么好的人在Oracle工作! (2认同)
  • 到目前为止,这是我在标准Java库中看到的最糟糕的API。 (2认同)