2017-09-19 1 views
1

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

+0

Der neue Operator existiert bereits in der Karte? –

+0

die Frage ist gut, aber sehr breit, können Sie möglicherweise in Schnittstelle und Reflexion – nafas

+0

suchen nein der neue Operator existiert nicht.Ich möchte es zur Laufzeit hinzugefügt werden, ohne meine Hauptcode (OperatorsCatalog) – PegahK

Antwort

0

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 
    } 

    ... 
} 
+0

ändern, wie wird dies eine neue erkennen Implementierung im Klassenpfad verfügbar? –

+0

Es wird nicht. Es braucht den Entwickler, um seinen Operator irgendwo in seinem Code zu instanziieren – Pelocho

+0

yup ich denke, das OP will automatische Erkennung von jedem neuen Operator im Klassenpfad verfügbar. –

0

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.

Verwandte Themen