2012-04-19 87 views
4

我使用XML-RPC目前检索数据,这是我有:java.lang.Integer不能转换为[Ljava.lang.Object;

Object[] params = new Object[]{param1, param2}; 
Object[] obj = new Object[]{}; 

try { 
    obj = (Object[]) client.execute("method.name", params); 
} catch (XmlRpcException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

return obj; 

的问题是,有时它会返回-1,我会得到这个错误:java.lang.Integer中不能被投射到[Ljava.lang.Object; - 我想知道是否有解决这个问题的方法?

+3

它看起来像'client.execute'的返回值实际上不是一个Object [],而是一个Integer。 – 2012-04-19 23:42:15

+1

或者['Object'](http://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/client/XmlRpcClient.html) – 2012-04-19 23:48:21

回答

6

您必须在投射前检查返回值的类型。

Object result = client.execute(...); 
if (result instanceof Integer) { 
    Integer intResult = (Integer) result; 
    ... handle int result 
}  
else if (result instanceof Object[]) { 
    obj = (Object[]) result; 
} 
else { 
    ... something else 
} 

我会试图围绕这些RPC调用创建一个强类型的API。但是再次,也许这就是你已经在做的......

相关问题