DEV Community

FUNDAMENTOS JAVA
FUNDAMENTOS JAVA

Posted on

1

Interfaces funcionais

Definição de Interface Funcional

  • Contém apenas um método abstrato.

  • Pode ter métodos padrão e/ou static.

  • Método abstrato não especifica implementação.

interface MyValue {
double getValue();
}

Lembrete: Em interfaces funcionais, o modificador abstract não é necessário explicitamente, pois o Java assume que qualquer método que não tenha implementação em uma interface é automaticamente abstrato.

Atribuindo uma Lambda a uma Interface Funcional

MyValue myVal = () -> 98.6;

O tipo de retorno e os parâmetros da lambda devem ser compatíveis com o método abstrato.

Chamada do método abstrato:

System.out.println("A constant value: " + myVal.getValue());

Resultado: 98.6.

Interfaces Funcionais com Parâmetros

interface MyParamValue {
double getValue(double v);
}

Lambda com cálculo do recíproco:

MyParamValue myPval = (n) -> 1.0 / n;
System.out.println("Reciprocal of 4 is " + myPval.getValue(4.0));

  • Resultado: 0.25.

Inferência de Tipos

Tipo do parâmetro inferido pelo contexto:
(n) -> 1.0 / n; // Tipo inferido como double

Tipo explicitamente declarado (opcional):
(double n) -> 1.0 / n;

Regras de Compatibilidade

  • O tipo e número de parâmetros na expressão lambda devem corresponder ao método abstrato.

(int x, int y) -> x + y;

Conclusão

  • Interfaces funcionais possibilitam o uso de lambdas.

  • Expressões lambda fornecem uma implementação concisa para o método abstrato.

  • Contextos de tipo de destino e compatibilidade de tipos são cruciais para seu uso.

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs