[英]The method getOrDefault(String, String) is undefined for the type Map<String,String>
[英]Work with method "getOrDefault()" of the Map
當從一個頁面重定向到另一個頁面並將其設置為模型時,我想獲取 flashAttribute。 我嘗試使用此代碼:
Map<String, ?> map = RequestContextUtils.getInputFlashMap(request);
if (map != null) {
// this is redirect
model.addAttribute("attr", map.getOrDefault("attr", false));
}
我有一個錯誤:
類型 Map 中的 getOrDefault(Object, capture#3-of ?) 方法不適用於參數 (String, boolean)
如何使用 getOrDefault("attr", false) 方法解決此問題?
您需要對地圖進行未經檢查的演員表:
Map<String, Object> map =
(Map<String, Object>) RequestContextUtils.getInputFlashMap(request);
返回的地圖類型中的通配符相當錯誤,它應該是Map<String, Object>
。
在這兩種情況下, get(K)
返回Object
,但通配符禁止使用?
如類型作為參數V
中put(K, V)
這可能污染的地圖內容的類型正確性。
問題是這也會影響getOrDefault(K, V)
等方法,這些方法實際上並不修改地圖。
對於通配符值,您可以簡單地將調用getOrDefault
map
為您想要的值類型:
model.addAttribute("attr", ((Map<String, Boolean>) map).getOrDefault("attr", false));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.