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

Mohammad Irfan 12 outubro 2023
  1. Passe um método como um parâmetro usando a função lambda em Java
  2. Passe um método como um parâmetro para um método personalizado em Java
  3. Passe um método como um parâmetro usando a referência de método em Java
Passe um método como um 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

Artigo relacionado - Java Method