java.lang.Integer нельзя привести к [Ljava.lang.Object;

В настоящее время я извлекаю данные с помощью XML-RPC, вот что у меня есть:

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; - Мне было интересно, есть ли способ обойти эту проблему?


person Michael    schedule 19.04.2012    source источник
comment
Похоже, что возвращаемое значение client.execute на самом деле не Object[], а скорее Integer.   -  person Louis Wasserman    schedule 20.04.2012
comment
Или, может быть, Object   -  person Jordão    schedule 20.04.2012


Ответы (1)


Вы должны проверить тип возвращаемого значения перед приведением.

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
}

У меня возникло бы искушение создать строго типизированный API вокруг этих вызовов RPC. Но опять же, может быть, это то, что вы уже делаете...

person Jordão    schedule 19.04.2012