Neben dem Spezial-Attribut interface (http://www.top-logic.com/ns/config/6.0) kann das konkrete Konfigurationsinterface eines Listenelements auch über den Tag-Namen bestimmt werden. Hierfür muss die Annotation @Subtypes an der Listen-Eigenschaft verwendet werden.
interface Config extends ConfigurationItem {
@EntryTag("a")
@Subtypes({
@Subtype(tag = "b", type = B.class),
@Subtype(tag = "c", type = C.class) })
List<A> getListA();
interface B extends A {
...
}
interface C extends A {
...
}
}
In obigem Beispiel wird kann die Liste list-a dann polymorph mit Konfigurationen A, B und C gefüllt werden:
<config>
<list-a>
<a .../>
<b .../>
<c .../>
</list-a>
</config>
Diese Deklaration ist äquivalent zu der expliziten Angabe des konkreten Konfigurationsinterfaces am Listenelement:
<config xmlns:config="http://www.top-logic.com/ns/config/6.0">
<list-a>
<a .../>
<a config:interface="my.package.Config$B" .../>
<a config:interface="my.package.Config$C" .../>
</list-a>
</config>