【问题标题】:spring controller with deserialized list object具有反序列化列表对象的弹簧控制器
【发布时间】:2011-06-13 14:55:34
【问题描述】:
@RequestMapping(value = "/tester/", method = RequestMethod.POST)
    public String  testingonly(@RequestBody List<EachObject> eachobjectlist) throws IOException {

然后我会迭代每个对象列表,但列表中的每个项目都是 LinkedHashMap 类型,不是应该是“EachObject”类型吗?

【问题讨论】:

标签: java json spring rest jackson


【解决方案1】:

由于 type erasure 在运行时,泛型类型 EachObject 在运行时不存在。 Spring 将无法确定此信息。 Spring 只知道参数有一个原始类型 List,它会注入任何类型的 List。

根据@axtavt,方法参数的泛型类型是可访问的,但Spring 可能没有实现这一点,并且将来可能不会实现。这是因为泛型类型可以是接口或抽象类,Spring 将无法创建给定接口或抽象类的相应实现。例如,如果您请求Fruit 的列表并且Fruit 有两个几乎相同的子类,则无法确定要使用哪个子类。

【讨论】:

  • 关于类型擦除的说法不正确。 EachObject 可以使用 Method.getGenericParameterTypes() 访问,但可能在 Spring 中没有实现。
猜你喜欢
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
  • 2018-02-09
  • 2020-09-04
  • 1970-01-01
相关资源
最近更新 更多