I should add that now, with lambda expressions, the original
delegation model (in C# from Delphi) becomes somewhat obsolete. I've
heard Anders Hejlsberg talk about this as a redundant corner of C#
that he'd like to clean up but probably can't for reasons of backwards
compatibility.

/Casper

On 16 Sep., 22:52, Casper Bang <casper.b...@gmail.com> wrote:
> I think you might have been misled by the unfortunate mixing of
> concepts in the discussion, so I understand you would question this.
>
> DELEGATES
> For events, C# uses delegates which are type-safe method handles.
> Normal delegates are strong references, much like in Java, so the
> listeners will only become candidates for GC when they are
> unregistered OR the observable itself is subject to GC. This is no
> different than maintaining a manual list of observers in Java except
> it's baked in with some handy syntax (you invoke the delegate itself,
> isolated from the knowledge of the target object(s)). So if you can
> attain signature compatibility, you can wire things together.
> Delegates supports multi-casting, where you can add compatible
> delegates to another delegate. Silly example:
>
> // Multicast (void) delegate which can call anything that takes a
> string
> public delegate void FeedbackDelegate(string s);
>
> // Rather than mess with interface and adaptor class, create a
> delegate and associate with a SL4J logger instance's info method.
> FeedbackDelegate feedback = new FeedbackDelegate(sl4j.info);
> // In Java we can never have too many logging frameworks
> feedback += new FeedbackDelegate(log4j.log);
> // Let's also wire this up to a UI element
> feedback += new FeedbackDelegate(statusBar.text);
>
> // Usage
> feedback("Hello");
>
> EVENTS
> Events make use of delegates to assign a particular event handler to
> an object instance. You use the keyword "event" and lives under the
> restriction that the signature must match foobar(object source,
> EventArgs e). However this is what makes it possible to associate a
> generic "button_click" method, no matter which button is clicked. That
> method will use the event arguments to determine which button was
> actually clicked. Of course it could be any event matching the
> EventHandler signature so you are not just confined to buttons.
>
> On 16 Sep., 18:01, Joshua Marinacci <jos...@marinacci.org> wrote:
>
>
>
> > in JavaFX you do this:
>
> > Button {
> >         action: function() {
> >                 println("I'm doing stuff. Honest!");
> >         }
>
> > }
>
> > the function above is actually a closure. You could also do this:
>
> > function doStuff():Void {
> >         println("I'm really doing stuff this time");
>
> > }
>
> > Button { action: doStuff }
>
> > c'est facile!
>
> Unfortunately JavaFX is immature and of no use to many of us. So in
> Java we'll have to continue with interfaces and adapters, since beans-
> binding was dropped.
>
> /Casper
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to javaposse@googlegroups.com
To unsubscribe from this group, send email to 
javaposse+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to