Ich schreibe einen Rechner.Es gibt ein Paket namens Operatoren, die ich die vier wichtigsten Operatoren (+, -, *, /) Klassen implementiert haben ; Ich habe eine andere Klasse namens OperatorsCatalog, die eine Karte der bekannten Operatoren enthält, ich mache Instanzen von denen für in seinem Konstruktor und füge sie der Karte hinzu. Jetzt frage ich mich, wie es möglich ist, dass ein anderer Entwickler eine NewOperator.jar-Datei übergeben, die einen eigenen neuen Operator implementiert hat. Wie kann ich diesen neuen Operator zu meiner Karte hinzufügen, damit in der Zeit der Berechnung der neue Operator in map vorhanden ist. Wie kann ich das tun, ohne meinen OperatorsCatalog-Code zu ändern? Ich schreibe es in JavaSo erstellen Sie eine Instanz der Klasse in einem Jar Bibliothek zur Laufzeit
Antwort
Vielleicht Subclassing der Operatoren und Durchführung der Hinzufügung in super
Konstruktor? Auf diese Weise jede Instanziierung etwas Operator
erstreckt wird es automatisch auf der Karte hinzufügen
public abstract class Operator {
protected Operator() {
// add to map here
}
...
}
ändern, wie wird dies eine neue erkennen Implementierung im Klassenpfad verfügbar? –
Es wird nicht. Es braucht den Entwickler, um seinen Operator irgendwo in seinem Code zu instanziieren – Pelocho
yup ich denke, das OP will automatische Erkennung von jedem neuen Operator im Klassenpfad verfügbar. –
Wenn ich nicht falsch bin Sie in dem Classpath neue Operator Klassen zu entdecken, in der Lage sein wollen, haben einen Blick auf diese Frage.
Can you find all classes in a package using reflection?
Auch & Sie die neuen Entwickler benötigen ein Update auf einem Vertrag zu bekommen, wie die neue Operator Klassen geschrieben werden sollen.
- 1. So laden Sie eine JAR-Datei zur Laufzeit
- 2. So erstellen Sie neue Benutzereinstellungen in der app.config zur Laufzeit
- 3. So erstellen Sie eine Bibliothek
- 4. So erstellen Sie multi_array :: index_gen zur Laufzeit
- 5. So erstellen Sie eine Methode zur Laufzeit mit Reflection.emit
- 6. Laden Sie eine Klasse zur Laufzeit in einem Scala-Projekt
- 7. NoClassDefFoundError für .jar Bibliothek zur Laufzeit in Android Studio
- 8. Erstellen Jar-Bibliothek ohne eine Hauptklasse
- 9. Auswählen der Hauptklasse in einem ausführbaren Jar zur Laufzeit
- 10. So erstellen Sie eine dynamische Werteliste zur Laufzeit
- 11. Clojure: So erstellen Sie eine Funktion zur Laufzeit
- 12. C# Klasse erstellen und ändern zur Laufzeit
- 13. Erstellen Sie usercontrol zur Laufzeit
- 14. Java: Erweitern der Klasse zur Laufzeit
- 15. So erstellen Sie eine Instanz aus einem TypeMirror
- 16. Verschiedene Versionen der gleichen JAR zur Laufzeit
- 17. Erstellen Sie die Implementierung der Java-Klasse dynamisch basierend auf bereitgestellten Abhängigkeiten zur Laufzeit
- 18. So erstellen Sie eine Instanz einer Annotation
- 19. Wie kann ich eine neue Instanz einer Klasse zur Laufzeit mit C# erstellen?
- 20. Erstellen eine einzigartige Klasse zur Laufzeit für die Verwendung als Schlüssel in einem HashMap
- 21. So erstellen Sie benutzerdefinierte Schriftart zur Laufzeit mit NSFont
- 22. So erstellen Sie eine Instanz einer Klasse mit dieser Definition
- 23. Erweitern der Klasse zur Laufzeit
- 24. Lade Java-Klasse in Scala zur Laufzeit
- 25. Neue dynamische Instanz in PHP einer Klasse zur Laufzeit
- 26. XML-Datei in JAR zur Laufzeit aktualisieren
- 27. So führen Sie eine bestimmte Main-Klasse aus einem Jar
- 28. Laden und entladen Sie verschiedene Version von jar zur Laufzeit
- 29. So erstellen Sie eine ausführbare JAR-Datei
- 30. @RestController zur Laufzeit erstellen
Der neue Operator existiert bereits in der Karte? –
die Frage ist gut, aber sehr breit, können Sie möglicherweise in Schnittstelle und Reflexion – nafas
suchen nein der neue Operator existiert nicht.Ich möchte es zur Laufzeit hinzugefügt werden, ohne meine Hauptcode (OperatorsCatalog) – PegahK