1

我有一个通用的 api 来从 rest API 中获取不同的实体。下面是获取实体列表的方法(Groovy)。

class CommonRestApi<T>{

CommonRestApi(){        
}
....
List<T> getEntities(Class<T> clazz) {
    ClientResponse response = some_rest_get //works fine
    T[] entities
    if (response.status == 200) {
        try{
            GenericType<ResponseWrapper<T[]>> type = new GenericType<ResponseWrapper<T[]>>(){} //here is error

            entities = response.getEntity(type).getData()
        }catch(Exception e){
            log.debug e.getMessage()
        }
    }
    else {
        log.debug("Status Code: " + response.status)
    }
    return Arrays.asList(entities)
}
}

ResponseWrapper 类(Java):

public class ResponseWrapper<T> {

private T data;

public T getData() {
    return data;
}

public void setData(T data) {
    this.data = data;
}
}

并使用以下方法调用该方法:

 commonRestApi.getEntities(MyDomain.class)

此处 REST api 成功返回数据,但映射到 pojo 不起作用。错误消息只是:null。谁能告诉我这是否可能。如果是,请给我一些指导。注:通用API类在groovy中

4

1 回答 1

-1

我认为问题是你不能用泛型实例化一些东西

new GenericType<ResponseWrapper<T[]>>(){}

失败的原因相同

new T[10];

会失败。该类型T被编译器完全擦除,并且在运行时不存在。

于 2013-05-14T14:43:49.693 回答