java 泛型类的方法如何使用Class

2019-04-24 23:01发布

问题:

类似应用场景:

例如 json反序列化的方法是这样的:
public static <T> T fromJson(String json, Class<T> classOfT)

泛型类是这样的

public class ReqBody<T> {

    private T parameter;
    
    /**
     * 使用json反序列化赋值 ,这里怎么能用这个方法?
     */
   pub ReqBody(string json){
        parameter = fromJson(json, ???);
   }
}

上面类的内部如何使用Class<T>?或者有什么类似的方法实现?

回答1:

改写一下,把Class传进去:
public class ReqBody<T> {

private Class<T> clzz;

/**
 * 使用json反序列化赋值 ,这里怎么能用这个方法?
 */
public ReqBody(String json,Class<T> clzz){
    this.clzz = clzz;
    T obj = (T) JSONObject.parseObject(json,clzz);
    System.out.println(obj);
}


public static void main(String[] args) {
   ReqBody<Parameter> reqBody = new ReqBody<>("{\"path\":\"The path param\"}",Parameter.class);
}

}

class Parameter {

private String path;

public String getPath() {
    return path;
}

public void setPath(String path) {
    this.path = path;
}

@Override
public String toString() {
    return "Parameter{" +
            "path='" + path + '\'' +
            '}';
}

}
输出:
Parameter{path='The path param'}



回答2:

列如: object.class



回答3:

obj = fromJson(json, parameter.getClass());