If the array of messageListeners is called by A then how is any MessageListener supposed to 'know' about alpha? A called method can not access properties or methods of the callee inside of it since the type of the callee may change. You have to pass alpha around if you want A to be aware of it.
Notice that you are changing the contract that MessageListener defines by having it deal with another parameter, if it were possible to breach the interface's contract without anyone knowing about it, well that wouldn't make any sense (in java's perspective, some languages do allow this).
You are passing a message, shouldn't alpha be a part of that message? in what format is aMessage?
One solution is to define an interface that defines that what an actual message transfered looks like. In a simplified way, you can have a message
interface and have a SimpleMessage
and ComplicatedMessage
that implement it. aMessage can be of that type and you can handle the contents based on what the interface defined.