Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提供有关Spring控制器的Java泛型的信息_Java_Spring Mvc_Generics_Jackson - Fatal编程技术网

提供有关Spring控制器的Java泛型的信息

提供有关Spring控制器的Java泛型的信息,java,spring-mvc,generics,jackson,Java,Spring Mvc,Generics,Jackson,我有一个控制器,看起来像这样: 类GenericController{ 私有最终类resolvedClass; GenericNoSimizeController(类resolvedClass){ this.resolvedClass=resolvedClass; } @邮戳(“/”) 公共T句柄(@RequestBody final T object){ //需要resolvedClass的doStuff } 在代码的另一个地方,我正在检查一个类列表(我无法预先知道),并为每个类创建一个新的

我有一个控制器,看起来像这样:

类GenericController{
私有最终类resolvedClass;
GenericNoSimizeController(类resolvedClass){
this.resolvedClass=resolvedClass;
}
@邮戳(“/”)
公共T句柄(@RequestBody final T object){
//需要resolvedClass的doStuff
}
在代码的另一个地方,我正在检查一个类列表(我无法预先知道),并为每个类创建一个新的
GenericController
类实例,并以编程方式在自定义
RequestMappingHandlerMapping
中注册它

Class resolvedClass=//给我这个类的东西
GenericController=新的GenericController(resolvedClass);
//以编程方式注册它
问题是
handle()
中的代码需要resolvedClass的实例,但由于类型擦除,Jackson反序列化到
对象
,给了我一个
LinkedHashMap
的实例,该实例在运行时中断了我的代码

我当前的解决方案使用了一种变通方法,在这种方法中,我将对象作为字符串接收,然后显式使用ObjectMapper来获取实例:

@PostMapping(“/”)
公共T句柄(@RequestBody final String对象){
T反序列化对象=objectMapper.readValue(对象,resolvedClass);
//需要resolvedClass的doStuff
}

我只是想知道是否有任何方法可以在方法上指出我想要的类型,因为当前的解决方法并不理想,并且会在我的代码上导致一些集成问题。

我想你可以用这个方法来解决一些问题:我不确定我是否完全理解解决方案:是否需要请求填充一些额外的字段对类型进行初始化,这样自定义反序列化器就可以完成这项工作了?如果是这样,恐怕我无法修改传入的请求来传递这些标识符。我想你可以这样做:我不确定我是否完全理解解决方案:是否需要在请求中填充一些额外的字段来指示类型,这样自定义反序列化器就可以了alizer可以完成这项工作吗?如果可以,恐怕我无法修改传入的请求来传递这些标识符。