- /**
- * 回调接口的一种实现
- * 用于把网络返回的json字符串转换成参数化类型
- * 泛型 T 就是用户输入的javaBean的类型
- */
- public abstract class HttpCallback
implements ICallback { - @Override
- public void onSuccess (String result) {
- // result就是网络回来的数据
- // 把这个json转成用户需要的对象
- Gson gson = new Gson();
- // 得到javaBean对应的字节码
- Class> clz = analysisClassInfo(this);
- T objResult = (T) gson.fromJson(result, clz);
- // objResult就是用户最后需要的结果
- // 再把用户需要的结果回调给调用者
- onSuccess(objResult);
- }
-
- public abstract void onSuccess (T result);
-
- private Class> analysisClassInfo (Object object) {
- // getGenericSuperclass()得到包含原始类型,参数化,数组,类型变量,基本数据
- Type getType = object.getClass().getGenericSuperclass();
- // 获取参数化类型
- Type[] params = ((ParameterizedType) getType).getActualTypeArguments();
- return (Class>) params[0];
- }
-
- @Override
- public void onFailure (String e) {
-
- }
- }
上面的 analysisClassInfo() 方法是关键。
- /**
- * 回调的顶层接口(JSON,XML,.....)
- */
- public interface ICallback {
- void onSuccess(String result);
- void onFailure(String e);
- }