delegate-id MessageHandler (str as string).
end delegate.
class-id DelegatesEvents.
01 MessageArrived event type MessageHandler static.
method-id Main static.
*> explicit delegate construction
invoke new MessageHandler(MyHandler)
*> implicit delegate construction
declare handler as type MessageHandler = method MyHandler
*> subscribe to an event
attach method MyHandler to MessageArrived
*> raise the event
invoke MessageArrived("Test message")
*> unsubscribe from the event
detach method MyHandler from MessageArrived
*> Throws a null reference exception as there are no subscribers
invoke MessageArrived("Test message 2")
*> Safely raising an #event
declare handler2 as type MessageHandler = MessageArrived
if handler2 not equals null
invoke handler1("Safe message")
end-if
end method.
method-id MyHandler static (str as string).
display str
end method.
end class.
|
// Java has no concept of delegates or events.
// Similar behavior is typically achieved by using
// anonymous inner classes instead.
|