Spring Boot 使用Map来接受前端传过来的参数,指定泛型类型有什么作用

Spring Boot使用Map来接受前端传过来的参数时,我发现无论是否指定Map的泛型类型,对实际使用都没有任何的区别。

方式一,指定泛型类型

@PostMapping("/login")
public R login(@RequestBody Map map,HttpSession session){
    log.info(map.toString());
    return null;
}
方式二,不指定泛型类型

@PostMapping("/login")
public R login(@RequestBody Map map,HttpSession session){
    log.info(map.toString());
    return null;
}
不指定泛型类型,编译器会提示。但是经过一番debug调试,我发现无论是否指定泛型类型,达到的效果都是完全相同的,存储的东西都一模一样。
使用以下代码进行测试

这种情况后面的对象spring会将其封装为一个map

$axios.post("/user/login",{"data":{"data1":"value1"}})

 这种情况spring会将后面的直接封装为char[]

$axios.post("/user/login",{"data":"value"})
我经过断点调试,发现就算是使用了Map的方式接受参数,key的值也不是String,依然是char[]。可能这就是Java的泛型擦除?

但我比较好奇,为什么可以使用char[]来接收这个数据,挖坑以后自己研究,或者遇到大佬了请教一下。

你可能感兴趣的:(java,前端,spring,boot,java)