java泛型
前几天刷leetcode-majorityElement时碰到一泛型问题,用到的代码如下:
HashMap hashMap=new HashMap<Integer,Integer>(); //注释为正确写法 //HashMap<Integer,Integer> hashMap=new HashMap<Integer,Integer>(); if (hashMap.containsKey(n) ) hashMap.put(n,hashMap.get(n)+1);
报错在第5行,"+"运算符类型错误,hashMap.get(n)为Object型,1为int型
原先我以为由于java的类型擦除,那么第一行可以不用这样声明
HashMap<Integer,Integer> hashMap=new HashMap<Integer,Integer>();
而事实上若不写HashMap<Integer,Integer>它认为类型声明为为Object,另有一种复杂的解决方法:
hashMap.put(n,(int)hashMap.get(n)+1);
这是将Object强制转换为int