Ccenter hat folgendes geschrieben : |
mir ist nur nicht klar was genau jetzt ein Delegate ist bzw. macht. |
Ein Delegate ist eine Beschreibung einer Methode. Um genau zu sein, wird die Methoden
signatur, also die Parametertypen und -modifier, definiert. Eine Instanz eines Delegates muss nun genau diese Methode implementieren. Dafür übergibt man sie als Konstruktor im Parameter.
In Java gibt es keine Delegates, dort verwendet man Interfaces, was das ganze meiner Meinung nach verdeutlicht: Sie erlauben einen einheitlichen Zugriff auf irgendeine Methode, die die richtigen Parameter hat.
Java-Quelltext:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| interface MyDelegate { void call(String arg0, int arg1); }
class MyDelegateImplementation implements MyDelegate { public void call(String arg0, int arg1) { } }
class MyClass { public int field = 5;
public MyDelegate getDelegate() { return new MyDelegate { public void call(String arg0, int arg1) { doSomething(arg0, arg1); } } }
private void doSomething(String arg0, int arg1) { } } |
Die letzte Klasse ist das Äquivalent zu Delegates in C#: Das Interfaces
MyDelegate mit der Methode
call wird implementiert;
call ruft eine Methode des Objekts auf, das das Delegate instantiiert. So ungefähr macht es C# bzw. .NET auch.
Ich hoffe, das war jetzt nicht zu weit hergeholt.