Tengo cierta confusión y quiero aclarar mi concepto.
Vamos a decir que la declaración siguiente:
.map(i -> Tests.doubleIt(i))
Por lo tanto, cuando se utiliza el ::
como:
.map(Tests::doubleIt)
Así que, ¿el i
parámetro se recibe internamente por el doubleIt
e internamente pasa al doubleIt
método?
¿Podemos conocer el funcionamiento interno como el i
que se recibe y se reenvía al doubleIt
método en el caso de ::
?
El código de map
llamadas de la función se le pasa ( doubleIt
) pasándole el argumento directamente, lo que doubleIt
recibe como primer parámetro formal. Por el contrario, con su versión lambda, map
se llamará al lambda con el argumento de que su lambda recibe como i
parámetro, y luego su lambda llama doubleIt
usando i
como argumento. Por lo que es más directo con la referencia al método (en teoría) que con la lambda.