1. 程式人生 > >java android 泛型型別 獲取 json 自動轉物件

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