java android 泛型類型 獲取 json 自動轉對象

</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);
}

測試:

public 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;
    }
    
}
fastjson-1.2.5.jar

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();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章