Quiz

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 

Covariance

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() );
}











comments powered by Disqus