簡體   English   中英

Java - 類<? extends Collection>

[英]Java - Class<? extends Collection>

我想在下面的jackson反序列化中添加多個類。 但是我該怎么做呢? 下面是示例代碼。

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);

我如何添加多個類(例如:Body.class 和 P.class)。 我在下面嘗試,它不是正確的對象,因為它不是 Class 類型。

List<Class> clazz = new ArrayList<>();
clazz.add(ArtworkContentMessageType.class);
clazz.add(Body.class);
clazz.add(P.class);
MapType mapType = typeFactory.constructRawCollectionType(clazz);

java.lang.Class是一個泛型類,這意味着它可以按照以下語法接受參數:

Class<T>

其中 T 是由 Class 對象建模的類的類型。 以文檔中的示例為例, String.class的類型是Class<String>

因此,通過使用通配符語法,您可以在不知道其類型的情況下聲明Class的實例: Class<?>

如果您不知道類型但知道它會擴展給定的類,則可以使用以下語法: Class<? extends Superclass> Class<? extends Superclass>

所以這個語法:

Class<? extends Collection> list;

聲明一個類,其類型是Collection的子類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM