Quiz
#
Quiz 1
#
Corriger la déclaration de la fonction isPositive
pour être plus tolérante.
1
2
3
4
5
6
7
8
9
|
public boolean isPositive(Box<Number> box) {
Number n = box.get();
return n.doubleValue() > 0.0;
}
...
// pour l'instant, ceci ne compilerait pas:
isPositive( new Box<Integer>(10) ); // ==> true
isPositive( new Box<Double>(1.0) ); // ==> true
isPositive( new Box<BigInteger>("10") ); // ==> true
|
Quiz 2
#
Corriger la déclaration de la fonction addTo
pour être plus tolérante.
1
2
3
4
5
|
public static <T> void addTo(List<T> from, List<T> to) {
for (T t: from) {
to.add(t);
}
}
|
Quiz 3
#
Comment interpréter la méthode forEach
d’une collection ?
void forEach(Consumer<? super E> action);
Quiz 4
#
Comment interpréter la méthode map
d’un Optional<T>
?
public <U> Optional<U> map(Function<? super T,? extends U> mapper);
Quiz 5
#
Soit la hiérarchie de types suivante:
A
/ \
B E
/ \
C D
/
F
Et les déclaration suivante:
1
2
3
4
|
Box<B> b = new Box<>(new B());
Box<? extends A> ba = b;
Box<? super C> bc = b;
bc.set( ba.get() )
|
Identifiez quel est ou quels sont les problèmes.
Identifiez également les lignes qui posent problème:
1
2
3
4
|
bc.set( new A() )
bc.set( new D() )
bc.set( new C() )
bc.set( new F() )
|
Et enfin, cette méthode est-elle correcte ?
1
2
3
|
static void move(Box<? extends C> bc, Box<? super B> bb) {
bb.set( bc.get() );
}
|