繁体   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