Grundsätzlich was ich will, istwo public Methoden mit etwas anderen Rückgabewerten, um die gleiche Methode aufzurufen, um die erforderliche Arbeit auszuführen. Sie geben beide den Rückgabewert der privaten Methode zurück, aber die private Methode weiß, wie sie den richtigen Wert in Abhängigkeit von der öffentlichen Methode zurückgibt, die sie aufgerufen hat.Ändern eines Rückgabetyps in Abhängigkeit von der aufrufenden Methode
Beispiel Methoden:
public Map<Type1, Type3> doSomething1();
public Map<Type2, Type3> doSomething2();
private Map<Type1/Type2, Type3> doSomething();
im obigen Beispiel also, doSomething() gibt entweder Typ1 oder Typ2 als Key-Typ der Karte, auf der öffentliche Methode sie aufgerufen abhängig. Es wäre in der Lage, eine einfache Überprüfung durchzuführen und die Karte mit Objekten des richtigen Typs zu füllen.
Vielleicht kann dies durch eine clevere Java-Reflektion geschehen? Ich bin mir nicht sicher. Es scheint alles ziemlich doof zu sein, also wenn es einen viel besseren Weg gibt, bin ich ganz Ohr.
Ja, das ist es auch, was ich mir ausgedacht habe. Ich stimme zu, dass eine Methode keine Abhängigkeit von ihrem Anrufer haben sollte. Aber was, wenn doSomethingFor1() und doSomethingFor2() den exakt gleichen Code teilen, die einzige Sache, die sie unterscheidet, welches Objekt sie als der Schlüssel zur Karte hinzufügen? Wäre das nicht eine große Duplizierung von Code? –
muss der Duplizierung entgegengewirkt werden, indem die Funktionen ordnungsgemäß umgestaltet und doppelter Code in allgemeine Funktionen/Methoden eingefügt wird. – jrharshath
@Dissonant: Verwenden Sie einen Parameter, um anzugeben, welcher Schlüssel hinzugefügt werden soll.Schliesse nicht darauf, wer dich angerufen hat. –