2012-04-19 148 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。但是再次,也許這就是你已經在做的......

相關問題