我正在撰写Map<K, ? extends V>
的消费者。地图有一些V
的子类型,但我只处理V
。我希望getOrDefault
返回V
,我想提供一个默认值,它是V
的子类型,可能与地图的值类型不同。我写了这个方法来得到我想要的东西:
static <K, U, V extends U, W extends U> U getOrDefault(
Map<? super K, V> map, K key, W defaultValue)
{
final U value = map.get(key);
return (value == null) ? defaultValue : value;
}
任何原因都不能作为getOrDefault
的原始规范?