fastjson处理嵌套泛型
钢翼
编程
https://www.cnblogs.com/liqipeng/p/9148545.html
java由于泛型擦除,使用泛型并不像C#那么方便,作为一个好的架构,只能退而求其次,通过定义每个泛型类型的派生类来封装减少代码量。虽然还是会比C#的代码量大很多。
目前的方法是:
定义获取实际类型的接口
public interface IA<T> {
/**
* 获取泛型类型
* @return
*/
Type GetGenericArgument();
}2.定义抽象泛型继承接口,不实现GetGenericArgument
public abstract class A<T> implements IA{
@Override
public abstract Type GetGenericArgument();
}3.定义子类继承具体泛型
public class B extends A<B1>{
@Override
public Type GetGenericArgument(){
return B.class
}
}
public class C extends A<C1>{
@Override
public Type GetGenericArgument(){
return C.class
}
}4.嵌套泛型时使用GetGenericArgument()方法进行反序列化
public <T> T doSomething(A<T> c,String json){
var obj = JSONObject.parseObject(json,new TypeReference<A<T>>(c.GetGenericArgument()));
...
}