java泛型创建对象时出问题

Map paramMap = new LinkedHashMap<>();这种写法在myeclipse 、JDK1.7环境中编译错误 :Incorrect number of arguments for type LinkedHashMap; it cannot be parameterized with arguments <?>,请问是什么引起的呢?

8个回答

jdk1.7之前要求实例化的时候需要指明泛型。而1.7以及以后的版本中可以省略。可以检查下你的编译版本。

要求要高于1.7

正常啊,没什么毛病啊

myid_wy
myid_wy 没有指定泛型类型啊
大约 2 年之前 回复
gp2022
gp2022 但是报了后面的错误
大约 2 年之前 回复

只写<>默认是<?>一个泛型参数,而HashMap需要两个泛型参数。

你可以写成,泛型会根据声明推断出参数
MapparamMap = new LinkedHashMap<>();

或者
Map paramMap = new LinkedHashMap();

上边代码没打全,说的泛型推段是这样

Map <String,String>paramMap = new LinkedHashMap<>(); 
weixin_36907025
秋氺 回复gp2022: 这样写如果报错就要检查你的编译是否是1.7,使用的是1.7编译不一定是1.7
大约 2 年之前 回复
kbc_kbc
kbc_kbc Map<String, Object> paramMap = new LinkedHashMap<String, Object>();这么写不会报了吧
大约 2 年之前 回复
kbc_kbc
kbc_kbc 回复gp2022: 还是上面那个错误吗?
大约 2 年之前 回复
gp2022
gp2022 可能是myeclipse8.5的问题
大约 2 年之前 回复
gp2022
gp2022 Map<String, Object> paramMap = new LinkedHashMap<>(); 这样写还是一样的报错
大约 2 年之前 回复

Map paramMap = new LinkedHashMap<>(); 与jdk有关系的吧? 还是和Java compiler 有关系? 改动Java compiler 试试

泛型和jdk版本 基本上没有关系 好好分析代码

Map paramMap = new LinkedHashMap();
你这样试一下

weixin_36907025
秋氺 你这种写法跟泛型就没关系了
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!