Bonusblatt 2: Memoization

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Bonusblatt 2: Memoization
Kann mir jemand erklären wie ich den rekursiven Aufruf “abfange”? Bei AOP funktioniert das anscheinend mit JoinPoints, die implizit vor jeder Methode gegeben sind, aus denen sich der Aspekt mit einem PointCut die benötigten auswählen kann. Da ich aber kein AspectJ verwenden kann, ist mir nicht ganz klar wie das in Java umzusetzen ist, wenn ich nur eine Referenz auf das Objekt bekomme in dem die rekursiven Aufrufe stattfinden.


Vielleicht möchte man auch gar keine aspekte verwenden :confused:

Man aber so ein @before lässt sich doch auch super an den anfang der methode schreiben


Mir ist schon klar, dass es nicht wirklich mit Aspekte gemacht werden soll, steht ja auch mehr oder weniger in der Aufgabenstellung. Das hilft einem aber auch nicht viel weiter…, ich hab aber mitlerweile schon ne Idee, an der Umsetzung haperts nur noch. Ist @before nicht einfach nur ein “Hack” um den Test auszutricksen, dass soll ja auch funktionieren, wenn ich es “normal” nutzen würde.


Ich meinte damit das es quasi egal ist, ob man es @before nennt, oder ob mans einfach an den Anfang der Methode klatscht


Ich muss zugeben ich versteh nicht ganz worauf du hinaus willst, also ich versteh was du mit @before und an den Anfang der Methode schreiben meinst, aber ich rufe die Methode ja nicht auf, dass macht ja nur der Test. Mein Problem ist hauptsächlich, dass ich nicht weiß wie ich, wenn die rekursive Methode (ohne Memoization) aufgerufen wird, diese Methode dazu bringe in meinem Memoize Klasse nachzusehen ob schon ein Ergebnis vorhanden ist, da ich ja keinen Lookup in die rekursive Methode programmieren kann, weil es ja sonst wieder invasiv wäre. Meine Idee hätte auf Call-by-Reference basiert, bis mir eingefallen ist, dass Java by-Value called…

Edit: Hat sich erledigt, wer suchet der findet, man muss nur am richtigen Ort suchen …