java.lang.Integer cannot be cast to [Ljava.lang.Object;

java, xml-rpc

Solution

You have to check the type of the return value before casting.

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
}

I'd be tempted to create a strongly-typed API around these RPC calls. But then again, maybe that's what you're already doing...

Problem

I'm currently retrieving data using XML-RPC, this is what I have: ``` 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; ``` The problem is that sometimes it will return -1 and I'll get this error: java.lang.Integer cannot be cast to [Ljava.lang.Object; - I was wondering if there was a way around this problem?

Original source