簡體   English   中英

如何解決..抽象類? 仿制葯?

[英]how to solve.. abstract class? generics?

在當前的設置中,我有一個集中的幫助程序類,如下所示:

 @Override
 protected void onPostExecute(String result)
 {
     super.onPostExecute(result);
     if(task == null) {
         return;
     }

    Gson gson = new GsonBuilder().create();
    ResponseJson p = null;
    try {
        p = gson.fromJson(result, ResponseJson.class);
    } catch(JsonSyntaxException e) {
        //Toast.makeText(getApplicationContext(), getApplicationContext().getResources().getString(R.string.toast_sync_completed), Toast.LENGTH_SHORT).show();
        Log.e("", e.getMessage() + " got '" + result + "'");
    }
    Log.i("", p.toString());
    Log.i("", result);

    if(p.status.equals(ResultStatus.SUCCESS.toString())) {
        task.success(p.data);
    } else if (p.status.equals(ResultStatus.FAIL.toString())) {
        task.fail(p.data);
    } else if (p.status.equals(ResultStatus.ERROR.toString())) {
        task.error(p.message);
    } else {
        throw new UnsupportedOperationException();
    }
 }

問題是我想使ResponseJson類具有動態性,並使data屬性具有唯一性(有時我需要ArrayList<Something>其他時候是HashMap<String, String> )可用於轉換JSON結果。 我可以使用泛型或其他方式實現此目的嗎?

如果您將Object設置為data類型,

class ResponseJson {
    Object data;
}

稍后,您可以按以下方式以ArrayListHashmap形式獲取結果;

if (responseJson.data instanceof ArrayList<?>) {
    ArrayList<String> arrayList = (ArrayList<String>) responseJson.data;
} else if(responseJson.data instanceof HashMap<?, ?>) {
    HashMap<String, String> hashmap = (HashMap<String, String>) responseJson.data;
}

由於類型擦除,在運行時無法知道參數化的類型。 但是,如果您知道類型,則可以進行未經檢查的轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM