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.

Mar 15, 2025 - 05:13
 0
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.