有什么方法可以从Spring的AbstractHttpMessageConverter的support()方法中获取集合的通用类型?

时间:2018-09-04 15:35:19

标签: java spring-mvc reflection

我正在尝试创建CSV消息转换器以与Spring消息转换器一起使用,但是当support(Class<?> clazz)类型为{{时,我无法配置clazz方法1}}。基本上,我的Collection端点是直接返回REST个对象,而不是包装在另一个对象中。

使用反射,由于Collection的类型,我唯一能得到的是Collection,这显然并没有给我太多帮助。

我已经手动尝试过,也尝试过使用辅助工具,例如E中的TypeUtils.genericArrayType(clazz)。 我能想到的唯一解决方法是始终返回true并验证Apache Commons方法内的类型。

这是writeInternal(Object o, HttpOutputMessage message)类的实现中的一个错误,该类可以检索端点的返回类型,或者我是否错过了什么?

顺便说一句,这是在Spring实现中返回类型的方法吗?

AbstractMessageConverterMethodProcessor

1 个答案:

答案 0 :(得分:0)

好吧,我想我找到了答案。基本上是Java's type erasure在运行时删除了Collection类型信息。还有另一个抽象类AbstractGenericHttpMessageConverter,可让我实现public boolean canWrite(Type type, Class<?> clazz, MediaType mediaType)protected void writeInternal(Object o, Type type, HttpOutputMessage outputMessage)方法,这些方法包含一个Type自变量,可用于确定精确的Class宾语。