2011-05-31 21 views
6

sólo estoy jugando con MessageFormat, pero cuando trato de pasar una cuerda a MessageFormat formato método compila bien, pero cuando me siento un tiempo de ejecución excepción classcast. Aquí está el código.ClassCastException al convertir de cadena a objeto ... ¿por qué?

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

Ahora la excepción de tiempo de ejecución que consigo es como sigue.

Excepción en el subproceso "principal" java.lang.ClassCastException: java.lang.String no se puede convertir en [Ljava.lang.Object; en java.text.MessageFormat.format (origen desconocido) en java.text.Format.format (origen desconocido) en JavaCore2.Codepoint.main (Codepoint.java:21)

Respuesta

6

MessageFormat.format() toma un argumento de tipo Object[] (una matriz Object), mientras que está pasando en un solo Object.

Usted tendrá que crear una matriz de su Integer:

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

String result = format.format(args); 
+2

Esto es correcto javadoc respuesta dice claramente que el formato único argumento (obj) 'es equivalente a formato (obj, nuevo StringBuffer(), new FieldPosition (0)). toString(); 'que a su vez (si salta a otro javadoc) es equivalente al formato ((Object []) arguments, result, pos). ¡Qué buena gente trabaja en Oracle! –

+1

Esta es la peor API que he visto hasta ahora en la Biblioteca estándar de Java ... – kap

+0

De acuerdo. Esto me atrapa todo el tiempo. –

Cuestiones relacionadas