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