Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvida lambda

Boa tarde, só para me abrir a mente. O código completo é esse.

import java.util.function.Predicate;

class A{
    int a = 0;

    public static void main(String[] args) {
        new A().method(1, a -> a > 0); // A
    }        

    private void method(int a, Predicate<Integer> d) {
        if(d.test(a)){ // B
            System.out.println(a);
        }
    }
}

A dúvida está aqui:

 new A().method(1, a -> a > 0); // A
    }        

    private void method(int a, Predicate<Integer> d) {
        if(d.test(a)){ // B

Quando ele chama d.test(a) na verdade ele está fazendo o teste la da expressão Lambda da linha "A" né? No caso a -> a>0E recebe false ou true certo?

1 resposta
solução!

Sim, é isso mesmo. Você define o predicado a -> a > 0, e ele é utilizado para avaliar se o parâmetro a é trueou false.

No caso do seu exemplo a tem valor 1, então a avaliação do predicado deve retornar true, e esse código deve imprimir o valor de a na tela, no caso 1.