0
私は、サーバーからJSONArrays/JSONObjectsを取得し、それらを解析し、コールバック関数に渡される特定のオブジェクトを作成するために、非同期コールバックでokhttp3を使用しています。 ほとんどのコールバックコードはすべてのメソッドで同じですが、異なるコード行があります。 異なるオブジェクトに対して同じコードを何度も何度も書く必要がないように、コード行を減らすために使用できるパターンはありますか? 方法ごとに異なるコード行をマークしました。 私が持っている問題は、スイッチ/ケースを使用せずにコールバックオブジェクトを変更することなく、特定のJSON解析関数を呼び出すことです。コールバック重複コード
//-----------------------differs-------------------------
public void getUser(final HTTPResponseCallback<User> callback)
{
//-----------------------differs-------------------------
final String url = domain + USERS;
//-------------------------------------------------------
okHttpClient.newCall(buildRequest(url)).enqueue(new Callback()
{
Handler handler = new Handler(Looper.getMainLooper());
@Override
public void onFailure(Call call, IOException e)
{
handler.post(new Runnable()
{
@Override
public void run()
{
callback.onFailure();
}
});
}
@Override
public void onResponse(Call call, final Response response) throws IOException
{
if (response.isSuccessful())
{
try
{
String responseBody = response.body().string();
//-----------------------differs-------------------------
JSONObject jsonResponse = new JSONObject(responseBody);
final User user = JsonParser.parseUser(jsonResponse
//------------------------------------------------------
handler.post(new Runnable()
{
@Override
public void run()
{
//---------------------------------------last parameter differs----------------------------------------------
callback.onSuccess(new HTTPTransaction(response.code(), response.message(), response.header("ETag")), user);
//-----------------------------------------------------------------------------------------------------------
}
});
}
catch (JSONException e)
{
...
}
}
else
...
}
}
}
@Venjiraiはい、確かにあなたは正しいです - それは私の誤植でした。 – Andremoniy