2009-10-23 16 views
19

Estoy usando un servicio web que devuelve un objeto simple del tipo "Object". Debug muestra claramente que hay algún tipo de matriz en este objeto, así que me preguntaba cómo puedo convertir este "objeto" en una matriz (o similar).Java: Casting Object to Array type

He intentado lo siguiente:

Collection<String> arr = (Collection<String>) values; 
Vector<String> arr = (Vector<String>) values; 
ArrayList<String> arr = (ArrayList<String>) values; 

Pero nada funcionó. Siempre recibo una InvocationTargetException.

¿Qué estoy haciendo mal?

Editar:

Lamentablemente, tuvo que eliminar el enlace a la imagen que mostraba la salida del depurador de Eclipse, ya que ya no estaba disponible. No se pregunte por qué en las respuestas se menciona una imagen que ya no existe.

+0

InvocationTargetException contiene otra excepción. ¿Qué dice? –

+0

Eclipse dice ClassCastException. – Jens

Respuesta

32

Su objeto values es obviamente un Object[] que contiene un String[] que contiene los valores.

String[] stringValues = (String[])values[0]; 
+0

¡Eso hizo el truco! ¡Muchas gracias! – Jens

17

Lo que tienes (según la imagen de depuración) es una matriz de objetos que contiene una matriz de cadenas. Así que hay algo así como:

Object[] objects = (Object[]) values; 
String[] strings = (String[]) objects[0]; 

No ha mostrado el tipo de values - si esto ya es Object[] entonces es posible que utilices (String[])values[0].

Por supuesto, incluso con el elenco de Object[] todavía podría hacerlo en un comunicado, pero es feo:

String[] strings = (String[]) ((Object[])values)[0];