HOWTO · Java

Passe um método como um parâmetro em Java

Esta postagem fala sobre os métodos que você pode fazer para entender como passar um método como parâmetro em Java.

Este tutorial apresenta a passagem de um método como parâmetro em Java. Para ajudá-lo a entender melhor este tópico, incluímos códigos de exemplo.

Não há conceito de um método de passagem como um parâmetro em Java desde o início. No entanto, podemos conseguir isso usando a função lambda e a referência de método em Java 8. Portanto, neste artigo, vamos nos concentrar mais nesses dois tópicos para passar um método como parâmetro.

A função lambda ou expressão lambda é um conceito que foi introduzido em Java 8. É uma maneira concisa de escrever uma função seguindo a abordagem de estilo funcional. Como Java e Java 8 são considerados linguagens orientadas a objetos, eles oferecem suporte à abordagem funcional para escrever o código.

Passe um método como um parâmetro usando a função lambda em Java

Este é um exemplo simples de lambda, onde o usamos para iterar os elementos ArrayList. Observe que estamos passando a função lambda para o método forEach() da interface Iterable. A classe ArrayList implementa a interface Iterable.

Então é assim que podemos passar um método (função lambda) como um parâmetro em Java:

public class SimpleTesting {
  public static void main(String[] args) {
    ArrayList<Integer> evens = new ArrayList<Integer>();
    evens.add(10);
    evens.add(20);
    evens.add(30);
    evens.add(40);
    evens.forEach((n) -> { System.out.println(n); }); // passing lambda as a parameter
  }
}

Resultado:

10
20
30
40

Passe um método como um parâmetro para um método personalizado em Java

Além do método integrado forEach(), podemos passá-lo como um parâmetro para um método personalizado. Neste exemplo, criamos uma interface Doable tendo um método doSomething(). Na classe SimpleTesting, temos um método show() que chama o método doSomething(). Dentro do método main(), criamos uma função lambda e a passamos para o método show().

Observe que esta é a linha onde estamos passando um método (função lambda) como um parâmetro para um método.

show("Hello", doa); // passing lambda function as parameter
interface Doable {
  String doSomething(String str);
}
public class SimpleTesting {
  public static void main(String[] args) {
    Doable doa = (str) -> str + " Rohan";
    show("Hello", doa); // passing lambda function as parameter
  }

  public static void show(String msg, Doable doa) {
    String greeting = doa.doSomething(msg);
    System.out.println(greeting);
  }
}

Resultado:

Hello Rohan

Passe um método como um parâmetro usando a referência de método em Java

Esta é outra solução que pode ser usada para passar um método como parâmetro para um método. Também foi introduzido com a função lambda na versão Java 8. Neste exemplo, usamos o conceito de referência de método para passar o método show() como um parâmetro para o construtor Thread(), que é executado durante o tempo de execução. Veja a saída do exemplo de código aqui:

public class SimpleTesting {
  public static void main(String[] args) {
    // Passing method reference as a parameter
    Thread thread = new Thread(SimpleTesting::show);
    thread.start();
  }
  public static void show() {
    System.out.println("My Thread");
  }
}

Resultado:

My Thread