如何将对象转发到java.util.Map?

use*_*174 4 java casting object map

我在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请求.该请求不能正确地限定变量

请看看这个!?

编辑:

现在我有以下问题: o.getClass().getName()java.util.ArrayList,

o.get(0)[Ljava.lang.Object;@739e8329,

o.get(0).getClass().getName()给出java.lang.String.

我不知道该怎么做..

EDIT2:

最后我发现了发生了什么.创建此对象的软件将数据结构展平为String(valueOf()).所以,当我打印变量时,它返回了一个[Ljava.util.Object,它实际上是一个包含这些信息的String.

多谢你们!

Grz*_*zki 8

[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());      
Run Code Online (Sandbox Code Playgroud)

打印:

class [Ljava.lang.Object;
class java.lang.Object
Run Code Online (Sandbox Code Playgroud)


And*_*s_D 7

错误清楚地表明,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!");
    }
 }
Run Code Online (Sandbox Code Playgroud)