Indizierte Getter
Zusätzlich zu einer indizierten Kollektion von Unterkonfigurationen kann ein indizierter Getter definiert werden, der eine über das Key-Property identifizierte Unterkonfiguration aus der Kollektion zurückliefert. Im folgenden Beispiel kann auf Elemente der indizierten Kollektion sub-configs
über getSubConfig(String name)
einzeln zugegriffen werden.
public class MyClass {
public interface Config extends ConfigurationItem {
String SUB_CONFIGS = "sub-configs";
@Name(SUB_CONFIGS)
@Key(SubConfig.NAME)
Collection<SubConfig> getSubConfigs();
@Indexed(collection = SUB_CONFIGS)
SubConfig getSubConfig(String name);
}
public interface SubConfig extends ConfigurationItem {
String NAME = "name";
@Name(NAME)
String getName();
}
}
Hat man die indizierte Kollektion mit abstrakter (und leerer) Unterkonfiguration als Elementtyp definiert, kann man auf eine einzelne abgeleitete Unterkonfiguration über ihre Klasse zugreifen:
public class MyClass {
public interface Config extends ConfigurationItem {
String SUB_CONFIGS = "sub-configs";
@Name(SUB_CONFIGS)
@Key(ConfigurationItem.CONFIGURATION_INTERFACE_NAME)
Collection<? extends SubConfig> getSubConfigs();
@Indexed(collection = SUB_CONFIGS)
SubConfig getSubConfig(Class<?> subConfigClazz);
}
public interface SubConfig extends ConfigurationItem {
}
}