如果我想把一些JSON读入一个对象,并且我有接口,但必须使用Spring上下文来获得实现类,我需要使用SimpleAbstractTypeResolver来将接口Map到实现。如果我事先知道什么接口去什么实现。但是如果接口有返回其他接口的方法--可能是递归的--而我不知道我不需要事先知道,我想我可以使用反射来解决它。这就是我想到的,但是编译器不喜欢resolver.addMapping(method.getReturnType(),method.getReturnType())这行;,表示它不适用于这些参数,我非常肯定这些类型对那个方法来说是可以的--有什么想法吗?
for (Method method : clazz.getMethods()) {
if (method.getReturnType().isInterface() && method.getName().startsWith("get")) {
// getter method returns an interface so find its implementation class
Class beanClass = context.getBean(method.getReturnType()).getClass();
if (clazz.isAssignableFrom(beanClass)) {
resolver.addMapping(method.getReturnType(), method.getReturnType());
mapInterfaces(objectMapper, clazz, resolver);
}
}
}
2条答案
按热度按时间euoag5mw1#
也许你需要检查一下你的类型。
我的猜测如下:
(将第二个参数方法.getReturnType()替换为beanClass)
或者作为替代(代码对我来说不是完全清楚,抱歉)
您应该将接口和实现放入addMapping()中。
示例:
eh57zj3b2#
也许你需要检查一下你的类型。
我的猜测如下: