2012-04-19 9 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'です。 –

+1

また、['Object'](http://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/client/XmlRpcClient.html) –

答えて

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を作成したいと思います。しかし、もう一度、おそらくそれはあなたがすでにやっていることかもしれません...

関連する問題