6.7 Outros tipos de referências



This content originally appeared on DEV Community and was authored by FUNDAMENTOS JAVA

Referência a métodos sobrescritos da classe mãe:

Podemos usar super::metodo para referenciar métodos herdados, como:

super::toString;

Referência a métodos estáticos:

Podemos atribuir um método estático a uma interface funcional compatível.
Exemplo com Math::max, que recebe dois inteiros e retorna um inteiro:

BiFunction<Integer, Integer, Integer> max = Math::max;
ToIntBiFunction<Integer, Integer> max2 = Math::max;
IntBinaryOperator max3 = Math::max;

Evitar autoboxing desnecessário:

  • BiFunction: Usa boxing, pois trabalha com Integer.
  • ToIntBiFunction: Reduz umboxing do retorno, pois retorna int.
  • IntBinaryOperator: Evita todo o boxing, pois usa apenas tipos primitivos (int).

Qual usar?

  • IntBinaryOperator é a opção mais eficiente.
  • Porém, a escolha depende do contexto e do método que receberá a lambda como argumento.
  • Muitas vezes, passamos Math::max diretamente sem precisar declarar uma variável.

Conclusão:
Podemos referenciar métodos da classe mãe com super::metodo.
Métodos estáticos podem ser atribuídos a interfaces funcionais compatíveis.
Para operações numéricas, devemos evitar autoboxing usando interfaces específicas para tipos primitivos.


This content originally appeared on DEV Community and was authored by FUNDAMENTOS JAVA