Spring RESTTemplateを使ったジェネリック
2023-08-01 12:11:58
質問
そんなクラスがあるんだ。
public class Wrapper<T> {
private String message;
private T data;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
で、以下のようにresttemplateを使っています。
...
Wrapper<Model> response = restTemplate.getForObject(URL, Wrapper.class, myMap);
Model model = response.getData();
...
しかし、それはaを投げます。
ClassCastException
と読みます。 javaでJacksonを使用しようとした場合の問題点 を読みましたが、役に立ちませんでした。私の問題などに関連するトピックがいくつかあります。 https://jira.springsource.org/browse/SPR-7002 と https://jira.springsource.org/browse/SPR-7023
何かアイデアはありますか?
PSです。 私のエラーは
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to a.b.c.d.Model
resttemplateが私のジェネリック変数を理解できていないようで、ジェネリックTの代わりにオブジェクトとして受け入れているようです。あなたはそれから読み取ることができます ここで マーシャルするものから説明すると、こう書いてあります。
JSON型|Java型
オブジェクト|LinkedHashMap
どのように解決するのですか?
3.2 M2 で ParameterizedTypeReference が導入され、この問題を回避できるようになりました。
Wrapper<Model> response = restClient.exchange(loginUrl,
HttpMethod.GET,
null,
new ParameterizedTypeReference<Wrapper<Model>>() {}).getBody();
しかし、postForObject/getForObjectのバリアントは導入されませんでした。
関連
-
[解決済み] Spring Data JPAにおけるCrudRepositoryとJpaRepositoryのインターフェースの違いは何ですか?
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
アクセス制限の解決方法: ---- in Java
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Spring Bootアプリケーションにポートを設定する方法
-
[解決済み] List<Dog> は List<Animal> のサブクラスですか?Java のジェネリックはなぜ暗黙のうちに多相性にならないのですか?
-
[解決済み] Spring RestTemplateのパラメータ付きGET
-
[解決済み】Spring RestTemplateリクエストに "Accept: "ヘッダーを設定する方法は?
-
[解決済み] Spring RestTemplateでフォームデータをPOSTする方法は?
-
[解決済み】Spring RestTemplateでJSONオブジェクトの一覧を取得する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
Collections.sortがdoubleでソートできない問題を完璧に解決する。
-
javaの非静的メソッドを静的に参照することができない
-
メモ帳でJavaプログラムをコンパイルして実行すると、Could not find or load main class ...というエラーが表示される。解決方法
-
FindBugの使用概要
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
テストが空であるかどうかを判断するためのオプションの処理
-
Zipファイルの圧縮・解凍にantを使用する