具有动态方法参数类型的杰克逊类型引用



我希望能够使用动态方法参数类型创建杰克逊类型引用,以下示例使用反射方法.getParameterTypes()1。

由于TypeReference只接受编译类型参数,但我在SO中阅读,你可以做一些技巧,让它也使用动态类型。

Method method = methodsMap.getOrDefault("createXXX".toLowerCase(), null);
if(method != null && myBean!= null){           
Object retval = method.invoke(myBean, mapper.convertValue(product , new TypeReference<method.getParameterTypes()[0]>(){}));
}

其中method.getParameterTypes()[0]属于java util generic list的类型(类型擦除问题)

List<MyPojo>

你根本不应该使用getParameterTypes。您应该使用getGenericParameterTypes来获取Type。然后你可以把Type传递给TypeFactory以获得JavaTypeconvertValue也接受。

Type parameterType = method.getGenericParameterTypes()[0];
method.invoke(myBean, mapper.convertValue(
product, 
mapper.getTypeFactory().constructType(parameterType)
)
);

相关内容

  • 没有找到相关文章

最新更新