Logo

dev-resources.site

for different kinds of informations.

Referências de método

Published at
1/13/2025
Categories
java
lambda
Author
javaparainiciantes
Categories
2 categories in total
java
open
lambda
open
Author
18 person written this
javaparainiciantes
open
Referências de método
  • Conceito: Uma referência de método permite referenciar um método sem executá-lo.

  • Relação com expressões lambda: Ambas requerem um contexto de tipo de destino composto por uma interface funcional compatível.

  • Instância funcional: Uma referência de método cria uma instância de uma interface funcional quando avaliada.

Referências a Métodos Estáticos

  • O nome da classe e o método são separados por dois pontos duplos (::), introduzidos no JDK 8.

  • Pode ser usada onde for compatível com o tipo de destino.

Exemplo de Referência a Métodos Estáticos

  • Interface funcional:
    Nome: IntPredicate
    Método: test(int value)
    Parâmetros: um inteiro.
    Retorno: um booleano (testa condições sobre valores inteiros).

  • Classe auxiliar:
    Nome: MyIntPredicates
    Métodos estáticos implementados:
    isPrime(): verifica se o número é primo.
    isEven(): verifica se o número é par.
    isPositive(): verifica se o número é positivo.

  • Método principal:
    Nome: numTest()
    Parâmetros:
    Uma referência à interface IntPredicate.
    Um número inteiro a ser testado.

  • Execução:
    No método main(), três testes são realizados com numTest().
    Para cada teste, uma referência de método específica (isPrime, isEven, isPositive) é passada como argumento para a execução.

// Demonstra uma referência a um método estático.
// Interface funcional para predicados numéricos que opera com
// valores inteiros.
interface IntPredicate {
boolean test(int n);
}
// Esta classe define três métodos estáticos que verificam um inteiro
// em relação a alguma condição.
class MyIntPredicates {
// Um método estático que retorna true quando um número é primo.
static boolean isPrime(int n) {
if(n < 2) return false;
for(int i=2; i <= n/i; i++) {
if((n % i) == 0)
return false;
}
return true;
}
// Um método estático que retorna true quando um número é par.
static boolean isEven(int n) {
return (n % 2) == 0;
}
// Um método estático que retorna true quando um número é positivo.
static boolean isPositive(int n) {
return n > 0;
}
}
class MethodRefDemo {
// Este método tem uma interface funcional como tipo de seu
// primeiro parâmetro. Logo, pode receber uma referência a
// qualquer instância dessa interface, inclusive uma criada
// por uma referência de método.
static boolean numTest(IntPredicate p, int v) {
return p.test(v);
}
public static void main(String args[])
{
boolean result;
// Aqui, uma referência ao método isPrime é passada para numTest().
result = numTest(MyIntPredicates::isPrime, 17);
if(result) System.out.println("17 is prime.");
// Em seguida, uma referência ao método isEven é usada.
result = numTest(MyIntPredicates::isEven, 12);
if(result) System.out.println("12 is even.");
// Agora, uma referência ao método isPositive é passada.
result = numTest(MyIntPredicates::isPositive, 11);
if(result) System.out.println("11 is positive.");
}
}

  • A referência ao método estático isPrime() é passada como argumento para o método numTest().

  • O método isPrime() é compatível com a interface funcional IntPredicate.

  • A expressão MyIntPredicates::isPrime cria uma referência onde isPrime() implementa o método test() de IntPredicate.

  • As outras chamadas a numTest() seguem o mesmo princípio de compatibilidade e funcionamento.

  • Qualquer método que tenha a assinatura boolean test(int n) pode ser usado como referência para a interface IntPredicate.

lambda Article's
30 articles in total
Favicon
Getting Started with AWS Lambda: A Guide to Serverless Computing for Beginners
Favicon
Interfaces funcionais predefinidas
Favicon
Pergunte ao especialista - expressões lambda nas biblioteca de APIs
Favicon
Referências de construtor
Favicon
Referências de método
Favicon
Pergunte ao especialista - referência a um método genérico
Favicon
AWS Serverless: How to Create and Use a Lambda Layer via the AWS SAM - Part 2
Favicon
Setting Up AWS SNS, Lambda, and EventBridge via CLI: A Beginner's Guide
Favicon
As expressões lambda em ação
Favicon
Fundamentos das expressões lambda
Favicon
Pergunte ao especialista - especificando os tipos de dados em lambdas
Favicon
Introdução às expressões lambda
Favicon
AWS Serverless: How to Create and Use a Lambda Layer via the AWS SAM - Part 1
Favicon
Optimizing AWS Costs: Practical Tips for Budget-Conscious Cloud Engineers
Favicon
Build a highly scalable Serverless CRUD Microservice with AWS Lambda and the Serverless Framework
Favicon
Serverless or Server for Django Apps?
Favicon
Optimizing Serverless Lambda with GraalVM Native Image
Favicon
Solving the Empty Path Issue in Go Lambda Functions with API Gateway HTTP API
Favicon
AWS workshop #2: Leveraging Amazon Bedrock to enhance customer service with AI-powered Automated Email Response
Favicon
How to return meaningful error messages with Zod, Lambda and API Gateway in AWS CDK
Favicon
Managing EKS Clusters Using AWS Lambda: A Step-by-Step Approach
Favicon
Schedule Events in EventBridge with Lambda
Favicon
Ingesting Data in F# with Aether: A Practical Guide to Using Lenses, Prisms, and Morphisms
Favicon
How to Create a Lambda Function to Export IAM Users to S3 as a CSV File
Favicon
New explorations at Serverless day
Favicon
Mastering AWS Lambda Performance: Advanced Optimization Strategies for 2025
Favicon
Lambda vs. Named Functions: Choosing the Right Tool for the Job
Favicon
How did I contribute for OpenAI’s Xmas Bonus before cutting 50% costs while scaling 10x with GenAI processing
Favicon
My (non-AI) AWS re:Invent 24 picks
Favicon
Alarme Dynamo Throttle Events - Discord

Featured ones: