Подтвердить что ты не робот

Java: литье объекта в тип массива

Я использую веб-службу, которая возвращает простой объект типа "Объект". Отладка ясно показывает, что в этом объекте есть какой-то массив, поэтому мне было интересно, как я могу применить этот "объект" к массиву (или подобному)?

Я попробовал следующее:

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

Но ничего не получилось. Я всегда получаю InvocationTargetException.

Что я делаю неправильно?

Edit

К сожалению, мне пришлось удалить ссылку на изображение, которое показывало выход отладчика Eclipse, потому что оно больше не было доступно. Пожалуйста, не удивляйтесь, почему в ответах упоминается изображение, которого больше нет.

4b9b3361

Ответ 1

Объектом values является, очевидно, Object[], содержащий a String[], содержащий значения.

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

Ответ 2

То, что у вас есть (в соответствии с отладочным изображением), представляет собой массив объектов, содержащий массив строк. Поэтому вам нужно что-то вроде:

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

Вы не указали тип values - если это уже Object[], тогда вы можете просто использовать (String[])values[0].

Конечно, даже с приведением в Object[] вы все равно можете сделать это в одном утверждении, но это некрасиво:

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