Обнаружение типа аргумента в данном FutureQuestJAVA

Программисты JAVA общаются здесь
Anonymous
Обнаружение типа аргумента в данном FutureQuest

Сообщение Anonymous »

Скажем, у меня есть этот API, который: < /p>

[*] требует много вещей аутентификации. < /li>
Всегда возвращает JSON, но иногда объект, а иногда и массив. Однако легко предсказать, что будет возвращено.private void sendRequest(String action, JsonObject params, FutureCallback callback) {

String nonce = "" + getNonce();

Builders.Any.B req = Ion.with(context, BASE_URL + action);

req.setBodyParameter("key", API_KEY)
.setBodyParameter("signature", getSignature(nonce))
.setBodyParameter("nonce", nonce);

if( params!=null ) {
for(Map.Entry param : params.entrySet()) {
JsonElement el = param.getValue();
if( el.isJsonPrimitive() ) req.setBodyParameter(param.getKey(), el.getAsString());
}
}

req.asJsonObject()
.setCallback(callback);
}

, который прекрасно работает, пока мне не нужно получить запрос, чтобы вместо того, чтобы быть JsonObject jsonarray :

Java.lang.classcastExcept /> < /blockquote>
Таким образом, в качестве быстрого обходного пути я могу создать два метода, которые перенаправляют поток на одно общее, но для того, чтобы облегчить ситуацию здесь, скажем, это выглядит следующим образом: < /p>
private void sendRequest(String action, JsonObject params, FutureCallback callback) {

String nonce = "" + getNonce();

Builders.Any.B req = Ion.with(context, BASE_URL + action);

req.setBodyParameter("key", API_KEY)
.setBodyParameter("signature", getSignature(nonce))
.setBodyParameter("nonce", nonce);

if( params!=null ) {
for(Map.Entry param : params.entrySet()) {
JsonElement el = param.getValue();
if( el.isJsonPrimitive() ) req.setBodyParameter(param.getKey(), el.getAsString());
}
}

req.asJsonObject()
.setCallback(callback);
}

private void sendRequest(String action, JsonObject params, FutureCallback callback) {

String nonce = "" + getNonce();

Builders.Any.B req = Ion.with(context, BASE_URL + action);

req.setBodyParameter("key", API_KEY)
.setBodyParameter("signature", getSignature(nonce))
.setBodyParameter("nonce", nonce);

if( params!=null ) {
for(Map.Entry param : params.entrySet()) {
JsonElement el = param.getValue();
if( el.isJsonPrimitive() ) req.setBodyParameter(param.getKey(), el.getAsString());
}
}

req.asJsonArray()
.setCallback(callback);
}
< /code>
Но затем Bam, появляется другая ошибка: < /p>

'sendrequest (string, jsonobject, futurecallback)' столкновения с 'sendrequest (string, jsonobject, futurecallback)'; Оба метода имеют одинаковую стирание

, кажется, эти типы были сняты во время выполнения, и виртуальная машина запуталась.
Я придумал некоторые решения ":

Я мог использовать все, что я могу использовать, но я могу использовать их, но я могу использовать их, но я могу использовать их, но я могу использовать их, но я могу использовать их, но я могу использовать их, но я могу использовать их, но я могу использовать их, но я могу использовать их. #18th Line.
[*] Я мог бы использовать string вместо этого, а затем проанализировать ее с помощью Gson ,
Я мог бы использовать другой парамет для указания типа, а затем отбрасывать мой обратный вызов


Но все они, кажется, только некоторые дешевые хаки, чтобы заставить вещи (как -то) работать. Кто -нибудь здесь знает какое -либо правильное решение этой проблемы?sendRequest(ACTION_BALANCE, null, new FutureRequest() {
@Override
public void onCompleted(Exception e, JsonObject result) {
// my code goes here
}
});

// OR just

sendRequest(ACTION_OPERATIONS, null, new FutureRequest() {
@Override
public void onCompleted(Exception e, JsonArray result) {
// my code goes here
}
});


Подробнее здесь: https://stackoverflow.com/questions/205 ... urerequest

Вернуться в «JAVA»