Generics Spring JMS和参数化类型(@JmsListener,带有例如List<;String>;参数)?

Generics Spring JMS和参数化类型(@JmsListener,带有例如List<;String>;参数)?,generics,spring-jms,jmstemplate,Generics,Spring Jms,Jmstemplate,我希望能够使用JmsTemplate.convertAndSent(…)发送例如List类型的值,然后使用带有@JmsListener注释的方法接收该值,该方法采用List类型的参数 然而,将消息负载类型存储为消息属性的默认方法似乎不支持泛型 如果我查看MappingJackson2MessageConverter.getJavaTypeFormMessage(Message)我会看到: Class<?> typeClass = ClassUtils.forName(typeId,

我希望能够使用
JmsTemplate.convertAndSent(…)
发送例如
List
类型的值,然后使用带有
@JmsListener
注释的方法接收该值,该方法采用
List
类型的参数

然而,将消息负载类型存储为消息属性的默认方法似乎不支持泛型

如果我查看
MappingJackson2MessageConverter.getJavaTypeFormMessage(Message)
我会看到:

Class<?> typeClass = ClassUtils.forName(typeId, this.beanClassLoader);
return this.objectMapper.getTypeFactory().constructType(typeClass);
Class-typeClass=ClassUtils.forName(typeId,this.beanClassLoader);
返回此.objectMapper.getTypeFactory().constructType(typeClass);
因此,人们似乎只能从
typeId
获取
,而无法获取
参数化类型
的实例


是否有一些巧妙的方法混合我在这里缺少的类型参数信息?例如,以某种方式使用
参数化类型引用

我能做的最好的事情就是在发送端创建一个参数化类型的子类。例如,我有:

public class StringList extends ArrayList<String> {
    public StringList(Collection<String> c) {
        super(c);
    }

    // Empty constructor needed by Jackson.
    public StringList() { }
}
也就是说,我必须将我的
列表
转换为
字符串列表
,这样传出的消息将被标记为
字符串列表
类型

然后在接收端,我可以假装
StringList
不存在,然后像这样使用
List

@JmsListener(destination = "my-destination")
public void consumerList(List<String> list) { ... }
@JmsListener(destination=“我的目的地”)
公共无效用户列表(列表){…}
也就是说,Jackson在封面下创建了一个
StringList
的实例,但我将其作为
List
使用

这并不可怕-但是如果不需要创建
List
StringList
子类(然后将我的真实列表的内容复制到
StringList
的实例中),那就更好了

@JmsListener(destination = "my-destination")
public void consumerList(List<String> list) { ... }