OkHttp封裝(帶泛型)
封裝工具類
public class HttoUtils2 { private NetDataCallBack netDataCallback; private Handler mhand=new Handler(); public <T> void getdata(String url, final NetDataCallBack netDataCallback, final Class<T> tclass) { //初始化一個 OkHttpClient 並且設定連線和讀取超時時間 OkHttpClient okhttp = newOkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(20, TimeUnit.SECONDS) .build(); //構造一個Request物件 Request request = new Request.Builder().url(url).build(); //通過request的物件去構造得到一個Call物件 Call call = okhttp.newCall(request); call.enqueue(newCallback() { @Override public void onFailure(Call call, IOException e) { netDataCallback.faild(499,e.getMessage()); } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string();Gson gson=new Gson(); T t = gson.fromJson(string, tclass); final Message msg = Message.obtain(); msg.what=ok; msg.obj=t; mhand.post(new Runnable() { @Override public void run() { netDataCallback.success(msg.obj); } }); } }); } //post請求 public <T>void getLoadDataPost(String url, final NetDataCallBack netDataCallback, final Class<T> tClass, RequestBody body){ this.netDataCallback = netDataCallback; OkHttpClient okHttpClient = new OkHttpClient.Builder() .readTimeout(20, TimeUnit.SECONDS) .connectTimeout(10, TimeUnit.SECONDS) .build(); final Request request = new Request.Builder().url(url).post(body).build(); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { netDataCallback.faild(499,e.getMessage()); } @Override public void onResponse(Call call, Response response) throws IOException { T t = new Gson().fromJson(response.body().string(), tClass); final Message msg = Message.obtain(); msg.what = OK; msg.obj = t; mhand.post(new Runnable() { @Override public void run() { netDataCallback.success(msg.obj); } }); } }); } }
建立介面
public interface NetDataCallBack<T> { void success(T t); void faild(int positon, String str); }
Activity運用
implements NetDataCallBack<Data>
public void aaa(){ HttoUtils2 utils2 = new HttoUtils2(); utils2.getdata(url,this,Data.class); } @Override public void success(Data data) { } @Override public void faild(int positon, String str) { }
相關推薦
OkHttp封裝(帶泛型)
封裝工具類 public class HttoUtils2 { private NetDataCallBack netDataCallback; private Handler mhand=new Handler(); public <T&
java 實現對List做二分查詢(支援泛型)
廢話不多說 直接上程式碼: public class Main { public static void main(String[] args) { List<Integer> list = new ArrayLi
Android----------OkHttp網路請求框架Get和Post簡單封裝(泛型)
請求框架的類: OkHttp依賴: compile 'com.squareup.okhttp3:okhttp:3.8.1' RecyclerView依賴: compile 'com.android.support:recyclerview-v7:26.0.0-alpha1
Java泛型 VS C#泛型 (偽泛型 VS 真泛型)
功能 方法表 語法 一個 class msil 虛方法 strong 反射 一、泛型的本質 泛型是參數化類型的應用,操作的數據類型不限定於特定類型,可以根據實際需要設置不同的數據類型,以實現代碼復用。 二、Java泛型 Java 泛型是Java1.5新增的特性,JVM並
.NET編程01(泛型)
基類 減少 inter st3 func basic line pro ping 一:Object 類型:一切類型的父類,通過繼承,子類擁有父類一切屬性和行為;任何父類出現的地方,都可以用子類來代替; 用一個方法來完成多個方法做的事 /// <summary>
十二、事件,委托,泛型委托,集合(泛型和非泛型),Lambda表達式(聲明委托,使用委托,簡單的委托示例,action<T>和func<t>委托,多播委托,匿名方法,Lambda表達式,參數,事件)
multicast new 調用方法 多播 ted 被調用 輸入參數 pac cas 事件(Event) 事件是一種對象或類能夠提供通知的成員,客戶端可以通過提供事件處理程序為相應的事件可添加可執行代碼,事件可以理解為一種特殊的委托。 委托(Delegate) 委托是存有對
Java學習筆記29(集合框架三:泛型)
出了 oar sta package 獲取 demo 強制 lis oid 泛型的概念: 簡單地講,就是同一個方法(類),可以接受不同的數據類型並運行得到相對應的結果,不會出現安全問題 上一篇有一段這樣的代碼: 沒有定義集合類型、叠代器類型 package demo;
Scala筆記整理(八):類型參數(泛型)與隱士轉換
大數據 Scala [TOC] 概述 類型參數是什麽?類型參數其實就是Java中的泛型。大家對Java中的泛型應該有所了解,比如我們有List list = new ArrayList(),接著list.add(1),沒問題,list.add("2"),然後我們list.get(
集合的嵌套(泛型)和遞歸算法
入學 信息 add getc over import override 很多 tostring 1、 集合的嵌套: 集合的用法其實和數組的用法有很多共同之處,在使用數組的時候,二維數組就是數組的嵌套; 那麽在集合之中是否也可以這樣呢? 當然也是可以的,例如對於最復雜的的m
根據用戶名的輸入顯示密碼(用了<String>泛型)
子類 secret public pan rgs else println stat system.in /*接口List分為LinkedList和ArrayList;泛型<String>規定該類new出的對象或聲明的引用只能存放String類的對象 eg:Li
Java基礎知識(JAVA之泛型)
書寫 來源 bject tail java基礎 包括 知識 為什麽 情況下 什麽是泛型?為什麽要使用泛型? 泛型,即“參數化類型”。一提到參數,最熟悉的就是定義方法時有形參,然後調用此方法時傳遞實參。那麽參數化類型怎麽理解呢?顧名
Typescript | 二維陣列(泛型)矩陣行列互換
/* * @Author: Prpr_Saber * @Date: 2018-11-02 17:06:29 * @Last Modified by: Prpr_Saber * @Last Modified time: 2018-11-02 21:41:47 */ export let t
WEB開發Dao層的抽取(獲取泛型的Class物件,實現查詢方法的抽取)
在WEB開發中,用到三層架構中經常會遇到程式碼抽取的情況,例如在dao層中,我們需要對資料庫的基本操作進行抽取例如這樣,在抽取之前我們需要定義抽取類的介面: public interface BaseDao<T> { public void save(T
android開發 之OkHttp二次封裝(android 訪問網路)
這個是本人在使用的一個網路請求,根據自己的需求進行修改的,對於自己完全夠用。大家有需要可以根據自己的專案修改成自己需要的。如果有什麼問題,還希望告知。 使用時繼承該類即可 import android.os.Handler; import android.os.Message;
Java中的Object、T(泛型)、?區別
Object範圍非常廣,而T從一開始就會限定這個型別(包括它可以限定型別為Object)。 Object由於它是所有類的父類,所以會強制型別轉換,而T從一開始在編碼時(注意是在寫程式碼時)就限定了某種具體型別,所以它不用強制型別轉換。(之所以要強調在
資料結構——連結串列實現佇列(泛型)
package Test; public class LinkedListQueue { public static void main(String[] args) { // TODO Auto-generated method stub Queue <Integer>
java 泛型詳解(普通泛型、 萬用字元、 泛型介面,泛型陣列,泛型方法,泛型巢狀)
JDK1.5 令我們期待很久,可是當他釋出的時候卻更換版本號為5.0。這說明Java已經有大幅度的變化。本文將講解JDK5.0支援的新功能-----Java的泛型. 1、Java泛型 其實Java
簡單選擇排序演算法(泛型)
main.cpp #include "SelectSort.h" int main() { int r[8] = {0,49,27,65,97,76,13,38}; SelectSort(r, 7); return 0; } SelectSort.h #includ
List和List的區別(泛型)
java泛型的兩種用法:List是泛型方法,List public interface Dao{ List<T> getList(){}; } List<String> getStringList(){ return dao.
跟著實例學習設計模式(3)-工廠方法(創建型)
迪米特 tex 新的 類的設計 package set pre sdn sso 工廠方法屬於創建型設計模式。 設計意圖:定義一個用於創建對象的接口。讓子類決定實例化哪一個類,工廠方法使一個類的實例化延遲到其子類。 靜態工廠使用面向對象的方式,有