Ich versuche, meinen Code aufzuräumen, da ich viele verschiedene Klassen habe, die initialisiert werden müssen, bevor mein Programm bereit ist, seine Aufgaben zu erledigen.
Sie sind alle optional und können fehlschlagen, aber einer von ihnen muss erfolgreich sein.
Alle diese Klassen implementieren eine Schnittstelle namens Hook.Aufruf des Konstruktors eines anderen Objekts auf jedem Index von Array/Collection
Jede Initialisierung in eine HashMap gesetzt wird, ist hier ein Beispiel:
HashMap<String, Hook> hooks = new HashMap<>();
String key = "Fish";
if (isEnabled(key)) {
try {
hooks.put(key, new FishStoreHook());
} catch {
logError(key);
}
}
Aber jetzt muss ich für ein anderes haben, sagen Brot:
key = "Bread";
if (isEnabled(key)) {
try {
hooks.put(key, new BreadStoreHook());
} catch {
logError(key);
}
}
Gibt es eine Möglichkeit zu setzen etwas in einem Array oder einer Sammlung, so dass sie mit einer für jede Aussage aufgerufen werden können?
(Grund sie in eine HashMap gestellt werden, weil ihre Methoden mit einem Lauf für jeden HashMap.keySet() und ich brauche mögliche Fehler zu protokollieren)
Vielen Dank im Voraus!
Reflektion hat perfekt funktioniert, vielen Dank! :) Code von 150 Zeilen auf 17 reduziert, absolut fantastisch. Obwohl mein Konstruktor Argumente hatte, habe ich es geschafft, das mit 'clazz.getConstructor (Plan.class) .newInstance (this)' zu starten –