2

Lambda no Java

#Java
Renan Vale
Renan Vale

Criei este artigo com base no módulo 01 - tema Lambda, do curso de Desenvolvimento Avançado em Java. A cada módulo que finalizar irei criar um artigo como este, Sou iniciante e pretendo passar aqui minhas anotações e o que aprendi, espero que gostem.


Lambda no Java

Os lambdas obedecem o conceito do paradigma funcional, com eles podemos facilitar a legibilidade do nosso código, além disso com a nova API Funcional do Java podemos ter uma alta produtividade para lidar com objetos. Primeiramente, devemos entender o que são interfaces funcionais.


Interfaces Funcionais: são interfaces que possuem apenas um método abstrato.

Exemplo:

public interface Funcao {
 String gerar(String valor);
}


Geralmente a interface funcional possui uma anotação em nível de classe (@FunctionalInterface), para forçar o compilador a adaptar um erro se a interface não estiver de acordo com as regras de uma interface funcional. Esta anotação não obrigatória, pois o compilador consegue reconhecer uma interface em tempo de compilação.


@FunctionalInterface: protege a função não deixando criar outro método dentro


Com Default Método podemos colocar uma implementação padrão, para aquele método na interface. Assim podemos ter mais de um método na minha interface, e conseguimos usar a lambda.


Antes do Java 8 se quiséssemos implementar um comportamento específico para uma única classe deveríamos utilizar uma classe anônima para implementar este comportamento.


Estrutura da Lambda

InterfaceFuncional nomeVariavel = parametro -> logica;


Exemplo:

class FuncaoComLambda {
 public static void main(String[] args) {
  Funcao colocarPrefixoSenhor = valor -> "Sr. " + valor;
  System.out.prinln(colocarPrefixoSenhor.gerar("João"));
 }
}

@FunctionalInterface
 interface Funcao {
  String gerar(String valor);
}
//quando uma lambda possui apenas uma instrução no corpo de sua lógica não é necessário o uso de chaves.


Se a função possui mais de uma instrução devemos utilizar chaves e além disso deve explicitar o retorno se o retorno for diferente de void.

Exemplo:

Funcao colocarPrefixoSenhor = valor -> {
 String valorComPrefixo = "Sr. " + valor;
 String valorComPrefixoEPontoFinal = valorComPrefixo + ".";
 return valorComPrefixoEPontoFinal;
}; //sempre usar ; nas chaves da lambda
1
32

Comentários (1)

1
Isac Vidal

Isac Vidal

28/07/2021 00:47

Gostei do Artigo Renan! Parabéns e Muito Obrigado!

Começando com desenvolvimento FullStack

Brasil