java android 泛型型別 獲取 json 自動轉物件
阿新 • • 發佈:2019-01-24
</pre><pre name="code" class="java">/** * 通過泛型自動將json串轉為物件 注意抽象類, * <p> * 用的時候用匿名子類的方式:new JsonHelper<User>{}; * <p> * getGenericSuperclass才能轉為ParameterizedType */ public abstract class JsonHelper<T> { private Class<T> entityClass; @SuppressWarnings("unchecked") public JsonHelper(){ Type genType = this.getClass().getGenericSuperclass(); entityClass = (Class<T>)((ParameterizedType)genType).getActualTypeArguments()[0]; } public void doBus(){ // android從伺服器獲取資料 new Thread(new Runnable(){ @Override public void run(){ String jsonDatas = "{\"userName\":\"小明\"}"; T bean = JSON.parseObject(jsonDatas, entityClass); success(bean); } }).start(); } public abstract void success(T bean); }
測試:
fastjson-1.2.5.jarpublic class User{ private String userName; private String nickName; public String getUserName(){ return userName; } public void setUserName(String userName){ this.userName = userName; } public String getNickName(){ return nickName; } public void setNickName(String nickName){ this.nickName = nickName; } }
public class Test{ public static void main(String[] args){ JsonHelper<User> jsonHelper = new JsonHelper<User>(){ @Override public void success(User user){ System.out.println(user.getUserName()); }}; jsonHelper.doBus(); } }