簡體   English   中英

使用 Map 的方法“getOrDefault()”

[英]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 ,但通配符禁止使用? 如類型作為參數Vput(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM