我试图创建一个版本的HashMap,如果输入了一个重复的键,但不会替换该值,但实际上会将两个对应的值一起添加。键值必须为Number
,以便可以进行添加。然而,它似乎并不理解我的V
是Number
类型,或者至少在我尝试拨打super.put
之前。就好像在HashMap
与我声明的extend Number
不一样V
。具有参数化集合的泛型?
这是怎么回事?
public class AdditiveMap<K, V extends Number> extends HashMap<K, V>
{
@Override
public V put(final K key, final V value)
{
if (containsKey(key))
// Second param Found 'Number', required 'V'
super.put(key, (Number)(get(key).intValue() + value.intValue()));
else
super.put(key, value);
}
}
消息是说'Integer'与'V'不一样,这当然是正确的。 –
这是不是''合并'方法是在'Map'接口中设计的? –
@OliverCharlesworth'V' extends Number – Hatefiend