Java 8 Flashcards

1
Q

Qual a sintaxe de uma função lambda?

A

(argumento) -> (corpo)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

O argumento de uma sintaxe lambda pode ser nulo?

A

Sim! O exemplo abaixo é aceitável:

() -> System.out.println(“Hello World”);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

O corpo de uma sintaxe lambda pode ser nulo?

A

Não! Apenas o campo de argumentos pode ser nulo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Quando os parênteses não são obrigatórios em uma sintaxe lambda?

A

Quando existir apenas um argumento
Quando o tipo do argumento for implícito
(String s) -> { System.out.println(s); } //OK
String s -> { System.out.println(s); } //NÃO COMPILA
s -> { System.out.println(s); } // OK

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

O uso de parênteses na sintaxe dos argumentos lambdas é obrigatório quando?

A

Quando não houver argumentos
Quando os argumentos tiverem seu tipo explicitamente declarados
Quando o número de argumentos for maior ou igual a 2
(String s) -> { System.out.println(s); }
(int a, int b) -> { return a + b; }
() -> System.out.println(“Hello World”);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quando o uso de colchetes é obrigatório em uma sintaxe lambda?

A

Caso tenha apenas um parâmetro no corpo da função os colchetes não são obrigatórios.
Se a expressão lambda consistir de mais de uma linha, ela deve estar entre colchetes e cada expressão dever terminar com um ponto e virgula.

(oldState, newState) -> System.out.println(“State changed”)

(oldState, newState) -> {
System.out.println(“Old state: “ + oldState);
System.out.println(“New state: “ + newState);
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Quando o uso de colchetes não é obrigatório em uma sintaxe lambda?

A

Caso tenha apenas um parâmetro no corpo da função os colchetes não são obrigatórios.
Se a expressão lambda consistir de mais de uma linha, ela deve estar entre colchetes e cada expressão dever terminar com um ponto e virgula.

(oldState, newState) -> System.out.println(“State changed”)

(oldState, newState) -> {
System.out.println(“Old state: “ + oldState);
System.out.println(“New state: “ + newState);
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Como fazer o uso do return em uma expressão lambda?

A

É possível retornar um valor da expressão lambda assim como acontece com métodos.
Neste caso o ponto e virgula é sempre obrigatório. Mesmo que a expressão tenha uma única linha.
(param) -> {
System.out.println(“param: “ + param);
return “return value”;
}

(a1, a2) -> { return a1 > a2; }

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Quando o ponto e virgula é obrigatório?

A

Se a expressão tiver mais de uma linha.
Se a expressão for um return.

(a1, a2) -> { return a1 > a2; }

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

O que é uma interface funcional?

A

É uma interface com apenas um método abstrato.
Mesmo que esta interface tenha outros métodos default ou static, se ela tiver apenas um método abstrato, pode ser considerada funcional.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

A classe abaixo é uma interface funcional?

public interface DisplayFunction {
    void mostrar(String string);
}
A

Sim

Pois possui apenas um método abstrato.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

A classe abaixo é uma interface funcional?

public interface DisplayFunction {
    void mostrar(String string);
    default void imprimir(String string){
        System.out.println(string);
    }
}
A

Sim

Pois mesmo que tenha um método default, possui apenas um método abstrato.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

A classe abaixo é uma interface funcional?

public interface DisplayFunction {
    void mostrar(String string);
    void imprimir(String string){
        System.out.println(string);
    }
}
A

A classe não compila pois tem um método abstract com implementação.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

A classe abaixo é uma interface funcional?

public interface DisplayFunction {
    default void imprimir(String string){
        System.out.println(string);
    }
}
A

Compila, mas não é uma interface funcional pois não possui um método abstrato.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q
public interface DisplayFunction {
    void mostrar(String string);
    void ler(String string);
}
A

Compila, mas não é uma interface funcional pois possui dois métodos abstratos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Para que serve a classe predicate?

A

É uma interface funcional com um método abstrato. Este método chamado test, recebe um objeto e retorna um boolean.

17
Q

Qual a assinatura do método test da classe predicate?

A

public boolean test(T t);