6.7 Outros tipos de referências
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 max = Math::max; ToIntBiFunction 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.

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 max = Math::max;
ToIntBiFunction 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.