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