![](/img/trans.png)
[英]The method getOrDefault(String, String) is undefined for the type Map<String,String>
[英]getOrDefault for Map<String, ?>
尝试为Map获取或默认值:
String test = map.getOrDefault("test", "")
但这给了我一个错误“ Required?但有一个字符串”。 无论如何要解决这个问题?
Map<String, ?>
可以是任何类型。
getOrDefault
要求第二个参数与值具有相同的类型; 除了null
之外没有其他可以满足此要求的值,因为您不知道是否可以?
是String
, Integer
或其他任何值。
因为您只从映射中检索值,所以可以安全地强制转换为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.