1

残りの API から別のエンティティを取得するための共通の 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 に答える