X Tutup
Using Lambda to Implement Functional Interface Method ==================================================== - We have a *virtual* `Button` that when clicked will call an abstract method **onClick()** of a listener interface `OnClickListener`. - We need to implement the **onClick()** so that it prints the `Button` name. `OnClickListener.java` ```java package com.hmkcode; public interface OnClickListener { void onClick(Button button); } ``` `Button.java` ```java package com.hmkcode; public class Button { private OnClickListener onClickListener; private String name; // click the button public void click(){ this.onClickListener.onClick(this); } // getters & setters } ``` - We have three ways to achieve that: 1. **Implement** `OnClickListener` and override **onClick()** method. 2. Use `OnClickListener` as an anonymous class. 3. Use Lambda. - Our main class is `App.java` ```java package com.hmkcode; public class App { public static void main( String[] args ){ System.out.println( "Running App..." ); new App().run(); } public void run(){ Button myButton = new Button(); myButton.setName("MyButton"); // 1. implements onClickListener // 2. anonymous class // 3. lambda // click the button myButton.click(); } } ``` ### 1. **Implement** `OnClickListener` and override **onClick()** method ```java public class App implements OnClickListener { public static void main( String[] args ){...} public void run(){ Button myButton = new Button(); myButton.setName("MyButton"); // 1. implements onClickListener myButton.setOnClickListener(this); // click the button myButton.click(); } @Override public void onClick(Button button) { System.out.println(button.getName() +" Clicked! - implements interface"); } } ``` ### 2. Use `OnClickListener` as an anonymous class ```java public class App { public static void main( String[] args ){...} public void run(){ Button myButton = new Button(); myButton.setName("MyButton"); // 2. anonymous class myButton.setOnClickListener(new OnClickListener() { @Override public void onClick(Button button) { System.out.println(button.getName() +" Clicked! - anonymous class"); } }); // click the button myButton.click(); } } ``` ### 3. Use Lambda ```java public class App { public static void main( String[] args ){...} public void run(){ Button myButton = new Button(); myButton.setName("MyButton"); // 3. lambda OnClickListener lambda = button -> { System.out.println(button.getName()+" Clicked! - lambda"); } ; myButton.setOnClickListener(lambda); // click the button myButton.click(); } } ``` *To run the code use* ``` java-lambda>mvn exec:java ```
X Tutup