Predicate<List> bigger = list -> list.size() > 1000;
- Está correto porque:
- O parâmetro list não precisa ter seu tipo declarado pois o generics do
Predicate<List>
já declarou isso;- Não houve necessidade do {} após o "->" pois o Lambda só contém uma instrução, deixando o {} opcional.
b) Predicate<String> startsWithA = s -> s.startsWith("A");
- Está correto porque:
- Pelos mesmos motivos do item a;
- Como agora possuo um
Predicate<String>
, significa que o parâmetro "s" é uma String, permitindo que eu invoque o método "startsWith"; - Lambda válido
c) Predicate<Integer> big = list -> list.size() > 100;
Está incorreto porque:
Predicate está declarando um Integer em seu generics, Predicate<Integer>
tornando o parâmetro "list" um Integer, no qual não possui nenhum atributo static SIZE. Código não compila, lambda inválido.
d) String name=""; Predicate<String> isEmpty = s -> s.equals("");
- Está correto porque:
- Mesmos motivos do item b.