Chapitre 3 Flashcards
On peut contenir des primitives dans une ArrayList V/F ?
Faux, ArrayList contient des objets
Combien de façon il y a pour implémenter une interface générique ?
3 façons :
- spécifier le type du generics dans la classe : class ShippableRobot implements Shippable<Robot></Robot>
- créer une classe générique et laisser l’appelant de choisir le type du générique : class ShippableAbstractCrate<u> implements Shippable<u></u></u>
- ne pas utiliser de generic et de mettre le type objet dans la méthode de la classe
Voir page 112-113 pour plus d’explications
Montre moi une déclaration de type générique sur une méthode.
public static <T> Crate<T> ship(T t) {
...
}</T></T>
Comment appeler une méthode générique ?
Deux façons :
- implicitement : on appelle normalement la méthode avec les paramètres et le compilateur saura quel type
- explicitement : MyClass.<String>method("package");</String>
C’est quoi du legacy code ? Montre moi un exemple
Du legacy code c’est du vieux code.
Par exemple c’est du code qui n’utilise pas les generics (List unicorns = new ArrayList();)
Que se passe t’il quand on ajoute un primitif à une List ?
Java l’autoboxe en son Wrapper !!!! Car une List prends des Objects et pas des primitives
Explique le principe de Unbounded Wildcards
- C’est quand tu mets ? dans les generics pour dire que tu peux avoir n’importe quelle type dans un generic
Tu ne peux pas faire List<Integer> numbers = new ArrayList<>();
List<object> objects = numbers; // ne compile pas</object></Integer>
Le compilateur nous protège car on pourrait ajouter une String par la suite
Est ce qu’on peut faire ?
ArrayList<Number> list = new ArrayList<Integer>()</Integer></Number>
Non, pour nous protéger d’assigner une liste de Number dans une liste d’Objet
Si j’ai une méthode qui prend une List<object> est ce que je peux passer une list<String> ?</String></object>
Non, avec les génériques ont doit avoir un exact match
Dans les méthodes de certaines collections, qu’est ce que fait :
- push()
- offer()
- add()
- peek()
- pop()
- poll()
- push() va ajouter l’élément à l’avant de la queue
- offer() va ajouter un élément à l’arrière de la queue (renvoie false en cas d’erreur)
- add() va ajouter un élément à l’arrière de la queue (renvoie une exception en cas d’erreur)
- peek() retourne l’élément à l’arrière de la queue sans le retirer
- pop() retourne l’élément a l’arrière de la queue et la supprime (renvoie une exception en cas d’erreur)
- poll() retourne l’élément à l’arrière de la queue et la supprime (renvoie false en cas d’erreur)
Quels sont les implémentations de List ?
- ArrayList
- LinkedList
- Vector
- Stack
Que peut ajouter un TreeSet ?
TreeSet peut ajouter des objets qui implemente l’interface Comparable
Peut on mettre l’opérateur diamant vide lors de la déclaration de la classe ?
Non, interdit de le laisser vide ou avec ?
Donne moi les méthodes de l’interface Map
- put()
Quelles sont les classes qui héritent de Collection ?
List
Set
Queue