簡體   English   中英

地圖的getOrDefault <String, ?>

[英]getOrDefault for Map<String, ?>

嘗試為Map獲取或默認值:

String test = map.getOrDefault("test", "")

但這給了我一個錯誤“ Required?但有一個字符串”。 無論如何要解決這個問題?

Map<String, ?>可以是任何類型。

getOrDefault要求第二個參數與值具有相同的類型; 除了null之外沒有其他可以滿足此要求的值,因為您不知道是否可以? StringInteger或其他任何值。

因為您只從映射中檢索值,所以可以安全地強制轉換為Map<String, Object>

Object value = ((Map<String, Object>) map).getOrDefault("key", "");

這是因為您沒有在映射中添加任何值,否則以后將使調用不安全。 並且任何值類型都可以安全地存儲在Object引用中。

如果未找到,則此方法的實現返回給定的默認值(泛型-可以是任何類型)(AKA為null)。

  default V getOrDefault(Object key, V defaultValue) {
        V v;
        return (((v = get(key)) != null) || containsKey(key))
            ? v
            : defaultValue;
    }

隨附的文檔鏈接: https : //docs.oracle.com/javase/8/docs/api/java/util/Map.html#getOrDefault-java.lang.Object-V-

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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