3

Spring と restTemplate の問題に直面しています。ジェネリック配列を含むオブジェクト (ListResponse) を送信したい。定義は次のとおりです。

public class ListResponse<T> implements Serializable {

private long total;
private int page;
private int pageSize;
private T[] objects;

restTemplate.getForObject() でリクエストを送信します。その結果、ListResponse 型のオブジェクトを取得しますが、オブジェクト配列には、T 型のオブジェクトを含む配列ではなく、LinkedHashMaps の配列が含まれています。

restTemplate は配列内の要素を正しい型に変換できないようです。

タイプ T back のオブジェクトの配列を確実に取得するにはどうすればよいですか?

4

3 に答える 3

2

私は今日この問題を抱えていましたが、これが私が思いついた解決策です (実際、私の同僚の 1 人が提案しました)。List<MyDto> を返すインターフェイスで使用します。

RestTemplate を呼び出すときは、ジェネリック型を渡さないでください。
定義: public class MyDtoListTemplate extends ListTemplate<MyDto>

次に、電話する
MyDtoListTemplate template = restTemplate.getForObject("url", MyDtoListTemplate .class, mapOfPathVariables);

ジェネリック型を拡張/実装する具象クラスを定義する必要があるのは残念ですが、その後、ジャクソンデシリアライザーでジェネリック情報を利用できます。

于 2013-07-08T16:28:11.957 に答える