2011-01-02 5 views
3

метод внутри библиотеки, которую я использую, возвращает объект, но на самом деле это массив объектов. И я застрял там, где мне нужно это значение. Странно, что никто не попросил такого преобразования.преобразовать объект в объект []

+5

Это потому, что не имеет никакого смысла. –

+4

Да, я читал вопрос несколько раз сейчас, и либо придумал разные чтения, либо просто смутился. –

+1

не без контекста, так или иначе ... – kem

ответ

7
Object[] objects = new Object[] {1,"fde", 5L}; 
    Object casted = objects; 
    Object[] recovered = (Object[]) casted; 
2
Object o = ... 
Object[] array = { o }; 
+1

Хммм ... Я думал, что все наоборот. – Rekin

+0

пока это не работает – Khoi

+0

@ Khoi, не могли бы вы быть более конкретными об этом * не работает *? –

1

Вы можете simplay бросить его так:

Object[] arrayOfObjects = (Object[]) yourMethod(); 
2

Многие API, возвращают объект, потому что это самая общая вещь, чтобы вернуться. Обычно это относится к общим контейнерам, в которых вы можете хранить много разных типов. Метод getter style не может вернуть ничего более конкретного.

Не должно быть необходимости в явном «преобразовании». Просто бросьте его, и все готово.

Object object = MyApi.getFoo(); 
Object[] theRealThing = (Object[]) object; 

Или, если вы хотите быть уверены, что бросок будет работать:

Object object = MyApi.getFoo(); 
if (object instanceof Object[]) { 
    Object[] theRealThing = (Object[]) object; 
} else { 
    System.out.println("The impossible has happened!"); // or something like that 
} 
Смежные вопросы