从字符串转换为对象时发生ClassCastException。。为什么?

从字符串转换为对象时发生ClassCastException。。为什么?,exception,casting,classcastexception,Exception,Casting,Classcastexception,我只是在玩MessageFormat,但是当我尝试将字符串传递给MessageFormatformat方法时,它编译得很好,但随后我得到一个运行时类强制转换异常。这是代码 MessageFormat format=newmessageformat(“”); Object obj=Integer.toHexString(10); 格式。格式(obj) 现在,我得到的运行时异常如下所示 线程“main”java.lang.ClassCastException中的异常:java.lang.String

我只是在玩MessageFormat,但是当我尝试将字符串传递给MessageFormatformat方法时,它编译得很好,但随后我得到一个运行时类强制转换异常。这是代码

MessageFormat format=newmessageformat(“”);
Object obj=Integer.toHexString(10);
格式。格式(obj)

现在,我得到的运行时异常如下所示

线程“main”java.lang.ClassCastException中的异常:java.lang.String不能转换为[Ljava.lang.Object; 位于java.text.MessageFormat.format(未知源) at java.text.Format.Format(未知源) 位于JavaCore2.Codepoint.main(Codepoint.java:21)

MessageFormat.format()
接受类型为
Object[]
(一个
Object
数组)的参数,而您传递的是单个
对象

您必须使用
整数创建一个数组

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

String result = format.format(args);

这是正确的答案javadoc清楚地说,单参数格式(obj)
相当于格式(obj,new StringBuffer(),new FieldPosition(0))。toString();
反过来(如果跳转到另一个javadoc)相当于格式((Object[])参数,结果,pos多好的人在Oracle工作!同意。每次都让我感动。