Konvertieren aller Werte von zwei Enumerationen in einen Satz
Posted: 13 Jan 2025, 17:12
Ich habe zwei Enumerationen, die dieselbe Schnittstelle wie folgt implementieren:
Zwei Enumerationen namens SystemA und SystemB implementieren diese Schnittstelle.
Ich wollte die getConfig-Funktion allgemein wie folgt anwenden: -
Aber es wird ein Kompilierungszeitfehler ausgegeben, da der gebildete Stream vom Typ Config [] ist.
Also habe ich es mit der folgenden Änderung versucht: -
Aber auch dies ist fehlgeschlagen, da ich auch den forEach-Teil ändern muss.
Kann mir bitte jemand helfen, wie kann ich Änderungen vornehmen? der forEach-Teil? Oder wie kann ich map()/ verwenden? Funktion, damit die obige Codezeile funktionieren kann ?
Code: Select all
public interface System {
public String getConfigKey();
}
Code: Select all
public enum SystemA implements System {
ABC_CONFIG("ABC");
private SystemA(String configKey) {
this.configKey = configKey;
}
private String configKey;
public String getConfigKey() {
return configKey;
}
}
public enum SystemB implements System {
DEF_CONFIG("DEF");
private SystemB(String configKey) {
this.configKey = configKey;
}
private String configKey;
public String getConfigKey() {
return configKey;
}
}
Code: Select all
Set configKeys = Stream.of(SystemA.values(),
SystemB.values()).forEach(config -> config.getConfigKey()).collect(toSet());
Also habe ich es mit der folgenden Änderung versucht: -
Code: Select all
Set configKeys = Stream.of(SystemA.values(),
SystemB.values()).forEach(config -> config.getConfigKey()).collect(toSet());
Kann mir bitte jemand helfen, wie kann ich Änderungen vornehmen? der forEach-Teil? Oder wie kann ich map()/ verwenden?
Code: Select all
flatmap()