Callback using Interfaces in Java


In the case of Event-driven programming, we pass a reference to a function which will get called when an event occurs. This mechanism is termed as a callback. Java does not support function pointers. So we can not implement the same direction. But using interfaces we can achieve the same very easily.

In the example below, we've made a callback when a button is clicked. See the steps −

  • Create an interface ClickEventHandler with a single method handleClick().

  • Create a ClickHandler class which implements this interface ClickEventHandler.

  • Create a Button class which will call ClickHandler when it's click method is called.

  • Test the application.

Example

Live Demo

//Step 1: Create an interface for the callback method
interface ClickEventHandler {
   public void handleClick();
}

//Step 2: Create a callback handler
//implementing the above interface
class ClickHandler implements ClickEventHandler {
   public void handleClick() {
      System.out.println("Clicked");
   }
}

//Step 3: Create event generator class
class Button {
   public void onClick(ClickEventHandler clickHandler) {
      clickHandler.handleClick();
   }
}

public class Tester {
   public static void main(String[] args) {
      Button button = new Button();
      ClickHandler clickHandler = new ClickHandler();
      //pass the clickHandler to do the default operation
      button.onClick(clickHandler);

      Button button1 = new Button();
      //pass the interface to implement own operation
      button1.onClick(new ClickEventHandler() {
         @Override
         public void handleClick() {
            System.out.println("Button Clicked");
         }
      });
   }
}

Output

Clicked Button
Clicked

Samual Sam
Samual Sam

Learning faster. Every day.

Updated on: 18-Jun-2020

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements