Как вывести объект на java.util.Map? - PullRequest
4 голосов
/ 07 сентября 2010

У меня есть объект в моем коде типа Object: Object o

Класс экземпляра: Object: o.getClass() предоставляет Object.

Теперь это должна быть Карта! Как я могу вывести это на карту?

Я пытался: Map<String, Object> map = (HashMap<String,Object>)o

Но это возвращает: java.lang.ClassCastException: [Ljava.lang.Object; не может быть приведен к java.util.HashMap

Экземпляр 'o' получен из запроса XMLRPC. Этот запрос неправильно определяет переменные, предположительно

Пожалуйста, посмотрите на это!?

EDIT:

Теперь у меня есть следующая проблема: o.getClass().getName() т java.util.ArrayList,

o.get(0) дает [Ljava.lang.Object;@739e8329,

и o.get(0).getClass().getName() дает java.lang.String.

Я не могу узнать, что делать ..

EDIT2:

Наконец я узнал, что случилось. Программное обеспечение, создавшее этот объект, сплющило структуру данных в строку (valueOf ()). Поэтому, когда я печатал переменную, она возвращала [Ljava.util.Object, который фактически был строкой, содержащей эту информацию.

Спасибо, ребята!

Ответы [ 3 ]

8 голосов
/ 07 сентября 2010

[Ljava.lang.Object указывает тип объекта o является массивом объектов - то есть Object[]. Вы не можете привести его к Map.

Вы можете найти это полезным, если взгляните на: Java: что это: [Ljava.lang.Object;?

Вы заявили, что .getClass() означало Object, но было ли это Object или [LObject? Сравните с:

    Object[] array= new Object[]{};
    Object simple = new Object();

    System.out.println(array.getClass());
    System.out.println(simple.getClass());      

который печатает:

class [Ljava.lang.Object;
class java.lang.Object
7 голосов
/ 07 сентября 2010

Ошибка ясно указывает, что o не реализует интерфейс Map. Поэтому невозможно привести этот объект к Map.

Результатом является массив объектов. Возможно, массив на самом деле содержит карты. Попробуйте, если это работает:

 Object[] objects = (Object[]) o;
 if (objects != null && objects.length > 0) {
    Object object = objects[0];
    if (object instanceof Map) {
      Map map = (Map) object;
      System.out.println("Heureka!");
    }
 }
1 голос
/ 07 сентября 2010

Невозможно привести o к Map, поскольку он не реализует интерфейс Map. Исключение показывает, что o является массивом Object с.

...