in C usw. gibt es ja Zeiger auf Funktionen als Parameter. Nun habe ich
bspw. eine Methode, die ihrerseits zwei andere Methoden aufruft, aber
eigentlich von mehreren Klassen genutzt werden könnte, wobei lediglich
die intern aufgerufenen Methoden anders implementiert werden müssten.
Wie setze ich das am besten in Java um?
Viele Grüße,
Johannes
interface Callback
{
public void callback();
}
[…]
void doSomeStuff(Callback c)
{
c.callback();
}
z.b.
> Viele Grüße,
> Johannes
Danke, ich hab jetzt ein Interface erstellt mit 3 Methoden, eine
abstrakte Klasse, die eine Methode implementiert und weitere Klassen die
die abstrakte Klasse erweitern und die restlichen Methoden, welche aus
der einen Methode der abstrakten Klasse aufgerufen werden implementieren :-)
Viele Grüße,
Johannes
Eigentlich sollte man das in Java vermeiden, aber du kannst auch mit
Method m = MyClass.getMethod("myMethod")
die Methode einer Klasse holen und diese dann mit
Object reult = m.invoke(zielObjektDerLlasse, parameter)
ausführen.
In Java ist es aber eher üblich dafür ein Interface oder eine abstrakte
Klasse zu implementieren.
Gruß,
-Wanja-
--
"Gewisse Schriftsteller sagen von ihren Werken immer: 'Mein Buch, mein
Kommentar, meine Geschichte'. [..] Es wäre besser, wenn sie sagten:
'unser Buch, unser Kommentar, unsere Geschichte'; wenn man bedenkt, dass
das Gute darin mehr von anderen ist als von ihnen." [Blaise Pascal]
--- news://freenews.netfront.net/ - complaints: ne...@netfront.net ---
Hallo, ich denke die nächste (und gleichzeitig sauberste) Methode ist
ein Command Pattern (wurde oben schon kurz angerissen).
Soll also in verschiedenen Ausführungen eine Methode public String
machWas(String param1, int param2) aufgerufen werden könnte man
hingehen und
1.) ein Interface mit genau dieser einen Methode schreiben, also
public Interface MachWasCommand {
public String machWas(String param1, int param2);
}
und
2.) die Implementierung als innerClass übergeben, also
Macher.setMachWasCommand(new MachWasCommand(){
public String machWas(String param1, int param){
return "Aufruf mit "+param1+" und "+param2;
}
});
was dazu führt, das im Macher ein Aufruf von
getMachWasCommand().machWas("bla", 88);
möglich wird...
Ich hoffe das hilft - auf jeden Fall good luck!
Sebastian Rothbucher