Souvent la notion de paires peut être pratique, utilisons la généricité pour créer un objet capable de gérer des paires de n’importe quel objet
public final class Pair<E, T> {
private E first;
private T second;
public Pair(E f, T s) {
first = f;
second = s;
}
public E getFirst() {
return first;
}
public T getSecond() {
return second;
}
}Méthode générique
On peut ensuite manier des classes génériques dans une fonction pour qu’elle puisse utiliser cette classe générique.
On peut aussi avoir comme type de retour une classe générique
public <S> Pair<String, S> function(S s) {
//...
}Types primitifs
On ne peut pas utiliser comme type générique un type primitif (eg. int, float, boolean, etc...), ce ne peut que être des classes
On a donc des types évoluées qui sont associés à des types primitifs (eg. Integer, Double, etc…)
Bornes
On peut forcer un type génériques dans des contraintes (bornes), par exemple qu’elles étendent d’une certaine classe
public final class Obj<E extends Obj2> {}