Saturday, May 24, 2014

Do it my way ...

Every body like to do their work in their own way, and others to follow their way. If not everybody, certainty most of the people. The art of making others doing the work in your way is called managerial skill, leadership etc .. No need to worry I am not getting some sort of management concepts.
We programmers  do copy the real world arrangement and behaviors to solve software designing problems. So the idea of one program,module and class controlling the way other behave is quite natural. Dependency injection is the well known way of doing such thing.
In Java it used to happen through interface and abstract class. Anonymous class is widely used to define the concrete class for such interface or abstract class.

JButton testButton = new JButton("Test Button");
     testButton.addActionListener(new ActionListener(){
     @Override public void actionPerformed(ActionEvent ae){
        System.out.println("Click Detected ...");

In the above code we are creating an anonymous class which extends  ActionListener. This is a commonly used technique. In Java 8 this whole concept is more formalized into lambda expression. We can re-write the previous example

JButton testButton = new JButton("Test Button");
testButton.addActionListener(e->System.out.println("Click Detected ..."));

Lambda expression simplifies the code significantly. Lambda expression is used when we have to implement a functional interface. Functional interface means interface with only one method to be implemented.
So the advantage of lambda expression over anonymous class is it reduce the lines of code.

Happy Coding ;)