我想在下面的jackson deserialize中添加多个类。但是我该怎么做?下面是示例代码。
XmlMapper mapper = new XmlMapper();
JaxbAnnotationModule module = new JaxbAnnotationModule();
mapper.registerModule(module);
AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(mapper.getTypeFactory());
mapper.setAnnotationIntrospector(introspector);
TypeFactory typeFactory = mapper.getTypeFactory();
Class<? extends Collection> list;
MapType mapType = typeFactory.constructRawCollectionType(list);
File is = new File("myXMLFile.xml");
ArtworkContentMessageType je = mapper.readValue(is,mapType);
下面的部分令我困惑。如何将类添加到列表中?
Class<? extends Collection> list;
MapType mapType = typeFactory.constructRawCollectionType(list);
我如何添加multple类(例如:Body.class和P.class)。我尝试下面,它不是正确的对象,因为它不是类类型。
List<Class> clazz = new ArrayList<>();
clazz.add(ArtworkContentMessageType.class);
clazz.add(Body.class);
clazz.add(P.class);
MapType mapType = typeFactory.constructRawCollectionType(clazz);
答案 0 :(得分:1)
java.lang.Class是一个可以接受参数的类,按照以下语法:
Class<T>
其中T是由Class对象建模的类的类型。采用与文档中相同的示例,String.class
的类型为Class<String>
。
因此,通过使用wildcard syntax,您可以在不知道其类型的情况下声明Class
的实例:Class<?>
。
如果您不知道该类型,但您知道它会扩展给定的类,则可以使用以下语法:Class<? extends Superclass>
。
所以这个语法:
Class<? extends Collection> list;
声明一个类,其类型是Collection
的子类。